Ответ 1
Попробуйте добавить этот атрибут к свойству MyDate
:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
Хотя настройка культуры в файле web.config должна сделать это, это должно заставить ее в этом формате.
UPDATE
Хорошо, поэтому приведенный выше ответ действительно не решает проблему, хотя важно, если вы хотите изменить формат отображения даты. Важно отметить, что атрибут DisplayFormat
не подхвачен помощником TextBoxFor
, но он является помощником EditorFor
.
В любом случае, к реальному решению. Проблема заключается в проверке jQuery, не учитывающей культуру при анализе даты. Если вы отключите проверку на стороне клиента, дата будет отлично разбираться на сервере, который знает о культуре.
Исправление состоит в том, чтобы переопределить проверку jQuery для даты и включить дополнительный плагин глобализации jQuery. Вы можете найти плагин globalize здесь. Вы также можете легко загрузить плагин с помощью диспетчера пакетов Nuget. Я только что открыл диспетчер пакетов, выбрал вкладку "Онлайн" слева и набрал "globalize" в поиске, и это был первый результат. Как только вы его установили, я включил эти два файла:
globalize.js
globalize.culture.en-AU.js
Вы можете включить их непосредственно с помощью тега script или поместить их в пакет, возможно, с другими файлами проверки jQuery.
После этого вам нужно будет добавить следующий script, чтобы переопределить проверку jQuery для даты:
<script type="text/javascript">
$(function () {
$.validator.methods.date = function (value, element) {
Globalize.culture("en-AU");
// you can alternatively pass the culture to parseDate instead of
// setting the culture above, like so:
// parseDate(value, null, "en-AU")
return this.optional(element) || Globalize.parseDate(value) !== null;
}
});
</script>
И это, это должно сделать трюк. Я одобряю это решение для этого ответа: JQuery Validation и MVC 3. Как изменить формат даты Я просто хотел предоставить несколько пояснений, характерных для вашей проблемы.