MVC.net Формат даты в хром - PullRequest
0 голосов
/ 08 мая 2018

Я создаю свое первое приложение, но сейчас я застрял на том, как Chrome обрабатывает даты (в сочетании с IE).

У меня есть модель с полем:

[Display(Name = "AcceptanceDate", ResourceType = typeof(Resources.ModelResources))]
        [DataType(DataType.Date)]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
        public DateTime? AcceptanceDate { get; set; }

Я использую это поле в виде.

     @if (Request.UserAgent.ToLower().IndexOf("chrome") > -1)
                            {
 @Html.EditorFor(m => m.AcceptanceDate, ViewBag.disableControls == true ? (object)new { disabled = "disabled", @class = "form-control" } : new { @class = "form-control", @type = "date" })
                            }
                            else
                            {
                                @Html.EditorFor(m => m.AcceptanceDate, ViewBag.disableControls == true ? (object)new { disabled = "disabled", @class = "form-control", @Value = Model.AcceptanceDate.HasValue ? Model.AcceptanceDate.Value.ToString("dd-MM-yyyy") : null } : new { @class = "form-control", @type = "date", @Value = Model.AcceptanceDate.HasValue ? Model.AcceptanceDate.Value.ToString("dd-MM-yyyy") : null })
                            }

И поместите указатель даты в поле со следующим кодом:

<!-- jQueryUI Stylesheet (from CDN) -->
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/jquery-ui.min.css" rel="stylesheet" type="text/css" />

<script type='text/javascript'>
    $.datepicker.regional['nl'] = {
        monthNames: [
            'Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober',
            'November', 'December'
        ],
        monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
        dayNames: ['Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag', 'Zondag'],
        dayNamesShort: ['Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za', 'Zo'],
        dayNamesMin: ['Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za', 'Zo']
    }

    $.datepicker.setDefaults($.datepicker.regional['nl']);
    $(function () {
        $("input[type='date']").datepicker({
            dateFormat: 'dd-mm-yy',
            showButtonPanel: false
        }).attr('type', 'text');
    });
</script>

Формат даты установлен на dd-MM-гггг. Когда я вызываю представление в Internet Explorer, все отлично работает. Значение извлекается из базы данных и отображается в ожидаемом виде (ДД-ММ-ГГГГ), средство выбора даты работает как символ (выбранная дата также отображается как ДД-ММ-ГГГГ), и сохранение данных также работает.

Но когда я использую chrome, начальное значение поля (при загрузке представления) отображается как ГГГГ-ММ-ДД. Средство выбора даты работает, и после выбора другой даты дата выбирается как ДД-ММ-ГГГГ.

Может кто-нибудь подсказать, почему хром показывает начальное значение в виде ГГГГ-ММ-ДД ?? Я попытался изменить код для EditorFor в представлении следующего кода:

@Html.EditorFor(m => m.AcceptanceDate, ViewBag.disableControls == true ? (object)new { disabled = "disabled", @class = "form-control", @Value = Model.AcceptanceDate.HasValue ? Model.AcceptanceDate.Value.ToString("dd-MM-yyyy") : null } : new { @class = "form-control", @type = "date", @Value = Model.AcceptanceDate.HasValue ? Model.AcceptanceDate.Value.ToString("dd-MM-yyyy") : null })

Но это привело к тому, что в текстовых полях не отображалось значение. (значение было отправлено в представление, но не отображено в элементах управления.

Пожалуйста, avise.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...