Подтвердить что ты не робот

Указанное значение не соответствует требуемому формату yyyy-MM-dd

У меня есть приложение .Net MVC 5, которое использует аннотации данных, Entity-Framework JQuery 2.1.3 и JQuery UI 1.11.4.

Когда я создаю форму редактирования с вводом даты типа с использованием британского формата "dd/MM/YYYY"; при использовании Google Chrome появляется следующее сообщение об ошибке:

Указанное значение "10/10/2001" не соответствует требуемому формату "yyyy-MM-dd". JQuery-2.1.3.js: 5317

Model

public class MyModel
{
    [Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public string MyDate { get; set; }
}

Отметить

<input class="text-box single-line" data-val="true" data-val-date="The field My date must be a date." id="MyDate" name="MyDate" type="date" value="10/10/2001" />

Значение правильно установлено в элементе управления ввода, но дата не отображается в браузере. Сначала я подумал, что это проблема с jQuery, поскольку она появляется в файле jQuery script, но при тестировании в IE и Firefox все работает нормально.

Тогда я предположил, что это моя региональная настройка в хром, поскольку по умолчанию Chrome считает, что все англичане в Америке, я изменил региональные настройки в Великобритании, и по-прежнему появляется одна и та же проблема.

Простое исправление будет состоять в том, чтобы изменить формат моей модели на универсальный, но для пользователей в Великобритании это немного чужой.

Можно ли указать хром, который принимает форматы даты в "dd/MM/YYYY"?

4b9b3361

Ответ 1

В спецификациях для выбора даты HTML5 указано, что дата должна быть в формате yyyy-MM-dd (формат ISO). Это означает, что вы DisplayFormatAttribute должны быть

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public string MyDate { get; set; }

В качестве альтернативы вы можете вручную добавить формат, используя

@Html.TextBoxFor(m => m.MyDate, "{0:yyyy-MM-dd}", new { @type = "date"  })

Более поздняя опция позволяет сохранить DataFormatString = "{0:dd/MM/yyyy}") для использования в @Html.DisplayFor()