Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DatePicker возвращает строку / 25 сообщений из 46, страница 1 из 2
04.12.2013, 08:44
    #38488327
asdor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
Ну могу разобраться с 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
04.12.2013, 09:07
    #38488338
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
у вас на серваке думаю выставлена культура не ru, и собственно дефолтный биндер не смог распарсить, полагаю он ожидает строку MM/dd/yyyy.
...
Рейтинг: 0 / 0
04.12.2013, 09:22
    #38488349
asdor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
А как эту культуру выставить?
Наверняка ламерский вопрос)

У меня VS2012.
MVC-4
MS Sql 2008
...
Рейтинг: 0 / 0
04.12.2013, 09:41
    #38488372
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
От культуры на сервере не зависит. Должно работать в любых условиях.
...
Рейтинг: 0 / 0
04.12.2013, 09:43
    #38488373
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
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
04.12.2013, 09:44
    #38488374
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
А "работает через раз", потому что после Post запроса ты делаешь нечто такое

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



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


показывает ru-RU, 1049,Русский
...
Рейтинг: 0 / 0
04.12.2013, 09:48
    #38488377
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
если у вас пост с редиректом то МСУ прав. я такую тему не давно тоже обсуждал
http://www.sql.ru/forum/1055850/povedenie-textboxfor
...
Рейтинг: 0 / 0
04.12.2013, 09:53
    #38488380
asdor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
МСУА "работает через раз", потому что после 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
04.12.2013, 09:56
    #38488384
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
Код: 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
04.12.2013, 10:13
    #38488408
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
по моему надежнее культуру ставить в web.config в теге globalisation - если ее менять не надо динамически
...
Рейтинг: 0 / 0
04.12.2013, 10:31
    #38488443
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
monstrU, десятый раз повторяю, культура вообще может быть любая. Проблема в другом.
...
Рейтинг: 0 / 0
04.12.2013, 10:56
    #38488481
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
Другой способ, основанный на родном формате 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
04.12.2013, 11:00
    #38488487
asdor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
МСУ,

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

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

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

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

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

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

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

Ладно, скачал, запустил, всё работает.
...
Рейтинг: 0 / 0
04.12.2013, 12:55
    #38488710
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
А где стили пикера? Добавь в _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
04.12.2013, 13:01
    #38488724
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
...

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

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

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

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

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

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

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

ГДЕ?)))
...
Рейтинг: 0 / 0
04.12.2013, 13:42
    #38488796
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
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
04.12.2013, 13:44
    #38488801
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DatePicker возвращает строку
asdorУпс, а бывают другие?)))
Ну раз такое заявление есть, значит точно бывают.

ГДЕ?)))

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

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

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


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