powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DatePicker возвращает строку
25 сообщений из 46, страница 1 из 2
DatePicker возвращает строку
    #38488327
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну могу разобраться с DatePicker -ом.
Странные, для меня, вещи происходят.
Есть модель
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    public class TestDpView
    {
        [HiddenInput(DisplayValue = false)]
        [Key]
        public int BidSaleId { get; set; }

        [DisplayName("Дата")]
        [DataType(DataType.DateTime)]
        public DateTime? Dat { get; set; }

        [DisplayName("Количество")]
        [Required]
        public decimal Quant { get; set; }



И представление
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
@model Abz4.Models.ViewModels.TestDpView

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>TestDpView</legend>


        <div class="editor-label">
            @Html.LabelFor(model => model.Dat)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.Dat, "{0:d}", new { style = "width: 6em", @class = "dp" })
            @Html.ValidationMessageFor(model => model.Dat)

        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Quant)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Quant)
            @Html.ValidationMessageFor(model => model.Quant)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}



Собственно DatePicker взят отсюда
http://codearticles.ru/articles/2254


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
<script>
    $(document).ready(function () {
        $.datepicker.regional['ru'] = {
            closeText: 'Закрыть',
            prevText: '&#x3c;',
            nextText: '&#x3e;',
            currentText: 'Сегодня',
            monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
                            'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
            monthNamesShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл',
                            'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
            dayNames: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
            dayNamesShort: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт'],
            dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
            dateFormat: 'dd.mm.yy',
            firstDay: 1,
            isRTL: false
        };

        $.datepicker.setDefaults($.datepicker.regional['ru']);

        $(".dp").datepicker({
            changeMonth: true,
            changeYear: true
        });

        jQuery.validator.addMethod('date',
            function (value, element, params) {
                if (this.optional(element)) {
                    return true;
                };
                var result = false;
                try {
                    $.datepicker.parseDate('dd.mm.yy', value);
                    result = true;
                } catch (err) {
                    result = false;
                }
                return result;
            },
            ''
        );
    });
</script>



Но тип DateTime возвращается далеко не всегда.
Вот запустил впервые, все сработало.
Запускаю повторно - в контроллере получаю значение dat=null
И вылазит ошибка "Значение "13.12.2013" не является допустимым для Дата."

если сделать public string Dat { get; set; }
То все работает как часы.
Почему? Что не так?
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488338
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас на серваке думаю выставлена культура не ru, и собственно дефолтный биндер не смог распарсить, полагаю он ожидает строку MM/dd/yyyy.
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488349
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как эту культуру выставить?
Наверняка ламерский вопрос)

У меня VS2012.
MVC-4
MS Sql 2008
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488372
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От культуры на сервере не зависит. Должно работать в любых условиях.
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488373
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor,
да хотя бы так
Код: c#
1.
2.
3.
4.
5.
protected void Application_BeginRequest()
        {
            Thread.CurrentThread.CurrentCulture =new CultureInfo("ru-RU");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU");          
        }


но вы должны понимать что и дробные числа будет теперь через "," восприниматься вместо "."
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488374
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А "работает через раз", потому что после Post запроса ты делаешь нечто такое

Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public ActionResult Index(TestDpView model)
{
    return RedirectToAction("Index", model);
}



дата уходит в URL, а с URL дата теряется.
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488376
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В начале контроллера поставил
Код: c#
1.
CultureInfo ci = Thread.CurrentThread.CurrentUICulture;


показывает ru-RU, 1049,Русский
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488377
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если у вас пост с редиректом то МСУ прав. я такую тему не давно тоже обсуждал
http://www.sql.ru/forum/1055850/povedenie-textboxfor
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488380
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА "работает через раз", потому что после Post запроса ты делаешь нечто такое

Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public ActionResult Index(TestDpView model)
{
    return RedirectToAction("Index", model);
}



дата уходит в URL, а с URL дата теряется.

Было такое.
Для тестирования упростил до максимума.
Вот весь котнроллер
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    public class TestDPController : Controller
    {
        public ActionResult Create()
        {
            return View();
        }
        
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(TestDpView testdpview)
        {
//тут останавливаю, и в модели, в Dat вижу null 
            return View(testdpview);
//а в представлении показывает вышеприведенную ошибку
        }

    }
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488384
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public ActionResult Index(string date)
{
    var model = new TestDpView();
          
    DateTime dt;
    if (DateTime.TryParseExact(date, new[] { "yyyyMMdd" }, CultureInfo.CurrentCulture, DateTimeStyles.None, out dt))
    {
        model.Dat = dt;
    }

    return View(model);
}

[HttpPost]
public ActionResult Index(TestDpView model)
{
    return RedirectToAction("Index", new { date = model.Dat.Value.ToString("yyyyMMdd") });
}
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488408
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по моему надежнее культуру ставить в web.config в теге globalisation - если ее менять не надо динамически
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488443
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrU, десятый раз повторяю, культура вообще может быть любая. Проблема в другом.
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488481
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другой способ, основанный на родном формате yyyy-MM-dd для биндера:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public ActionResult Index(DateTime? date)
{
    var model = new TestDpView();
    model.Dat = date;
    return View(model);
}

[HttpPost]
public ActionResult Index(TestDpView model)
{
    return RedirectToAction("Index", new { date = model.Dat.Value.ToString("yyyy-MM-dd") });
}
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488487
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Тупо создал новый проект
Использовал полностью ваш контроллер.
И свою модель и тот же вью.

Увы, на пост приходит нулл.(((

Ну и дальше ошибка , что его не должно быть(((
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488491
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor, скинь проект сюда в архиве.
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488555
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Файл во вложении
Выкинул все что мог), что бы влез сюда
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488600
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor, твой проект не компилируется, пакеты поломаны, ничего не работает.
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488666
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Я извиняюсь.
Видимо выкинул слишком много.
Закачал к себе на сайт

http://www.abz4.ru/tstDP.zip

Попробовал, вроде качается.
Тут полный проект без купюр
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488704
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А пакеты нафига в проект пихаешь? :)

Ладно, скачал, запустил, всё работает.
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488710
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где стили пикера? Добавь в _Layout.cshtml это:

Код: c#
1.
2.
@Styles.Render("~/Content/css", "~/Content/themes/base/css")
@Scripts.Render("~/bundles/jquery", "~/bundles/jqueryui", "~/bundles/jqueryval", "~/bundles/modernizr")  
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488724
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...

jQueryUI-шный пикер страшный и жуткий кошмар
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488757
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
У меня в первый раз тоже проходит.
Жму повторно, и получаю null

Хотел вставить картинку - но не сумел)
Что то у меня беда...

Конечно, легко обходится, в самом БД. сделал поле varchar.
И можно работать с ним.

Но, тяготит))) и просто не могу понять.

В VS2013 вообще не понятно, где DatePicker )))
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488760
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt...

jQueryUI-шный пикер страшный и жуткий кошмар

Упс, а бывают другие?)))
Ну раз такое заявление есть, значит точно бывают.

ГДЕ?)))
...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488796
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdorМСУ, У меня в первый раз тоже проходит
У тебя какая-то каша с бандлами, скриптами и стилями :) Всё великолепно работает.

Вообщем, удалил твою жуть и написал такой код в твоем проекте:

_Layout.cshtml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    
    @Styles.Render("~/Content/css", "~/Content/themes/base/css")
    @Scripts.Render("~/bundles/jquery", "~/bundles/jqueryui", "~/bundles/jqueryval", "~/bundles/modernizr") 

</head>
<body>
    @RenderBody()

    @RenderSection("scripts", required: false)
</body>
</html>



Index.cshtml
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
@model tstDP.Models.TestDpView
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>TestDpView</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Dat)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.Dat, "{0:d}", new { style = "width: 6em", @class = "dp" })
            @Html.ValidationMessageFor(model => model.Dat)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Quant)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Quant)
            @Html.ValidationMessageFor(model => model.Quant)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

<script>
    $(document).ready(function () {
        $.datepicker.regional['ru'] = {
            closeText: 'Закрыть',
            prevText: '&#x3c;',
            nextText: '&#x3e;',
            currentText: 'Сегодня',
            monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
                            'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
            monthNamesShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл',
                            'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
            dayNames: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
            dayNamesShort: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт'],
            dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
            dateFormat: 'dd.mm.yy',
            formatDate:"yy-mm-dd",
            firstDay: 1,
            isRTL: false
        };

        $.datepicker.setDefaults($.datepicker.regional['ru']);

        $(".dp").datepicker({
            changeMonth: true,
            changeYear: true
        });

        $.validator.addMethod('date',
            function (value, element, params) {
                if (this.optional(element)) {
                    return true;
                };
                var result = false;
                try {
                    $.datepicker.parseDate('dd.mm.yy', value);
                    result = true;
                } catch (err) {
                    result = false;
                }
                return result;
            },
            ''
        );
    });
</script>

...
Рейтинг: 0 / 0
DatePicker возвращает строку
    #38488801
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdorУпс, а бывают другие?)))
Ну раз такое заявление есть, значит точно бывают.

ГДЕ?)))

http://www.eyecon.ro/bootstrap-datepicker/

к примеру. тоже не фантан, но явно лучше унылого Г. в jQuery UI -- вообще весь этот фреймворк выкинуть на помойку и больше не вспоминать его ни при каких обстоятельствах.

а вообще идеального датапикера (с правильной поддержкой времени и TZ) в природе не существует.
ну кроме того, который написал сам для себя
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DatePicker возвращает строку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]