Я использую ASP.NET MVC 5 с ASP.NET 4.51. Я пытаюсь проверить мои даты как dd/MM/yyyy, например. 31/01/1960, но проверка модели продолжает говорить мне, что это неверная дата.MVC Date Culture Issue
Следующие предложения от других SO сообщений:
У меня есть следующие в моем web.config:
<system.web>
<globalization uiCulture="en" culture="en-AU" />
</system.web>
мой взгляд модель выглядит это:
public class PassengerItem
{
public PassengerItem()
{
DateOfBirth = new DateTime(1960, 1, 1);
}
[Required]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DateOfBirth { get; set; }
}
public class BookingProcessViewModel
{
/// <summary>
/// Class constructor
/// </summary>
public BookingProcessViewModel()
{
ErrorMessages = new List<string>();
Passengers = new List<PassengerItem>();
//Populate with 10 passengers. We show/hide these in the view. Currently we only allow a max of 4 pax to be booked at a time
for (int i = 0; i < 4; i++)
{
Passengers.Add(new PassengerItem());
}
}
public List<PassengerItem> Passengers { get; set; }
}
и контроллер удара с а именно POST:
[HttpPost]
public ActionResult Process(BookingProcessViewModel aViewModel)
{
}
, но я всегда получаю следующее сообщение об ошибке в модели состояния:
Ввод данных для дата выполняется с использованием jQueryUI со следующим HTML:
<input aria-invalid="false" class="form-control hasDatepicker valid"
data-jqui-dpicker-changemonth="True"
data-jqui-dpicker-changeyear="True"
data-jqui-dpicker-constraininput="True"
data-jqui-dpicker-dateformat="dd/mm/yy"
data-jqui-dpicker-defaultdate="01/01/1901"
data-jqui-dpicker-maxdate="24/08/2015"
data-jqui-type="datepicker" id="Passengers_0__DateOfBirth"
name="Passengers[0].DateOfBirth" value="31/01/1960" type="text">
Итак, проверка на стороне клиента проходит, но на стороне сервера есть проблема, и я просто не могу понять это. Это сводит меня с ума. Может ли кто-нибудь пролить свет?
Изменен файл web.config для культуры = "en-AU", но это не имеет никакого значения. Я использую jQueryUI для всплывающего выбора даты, поэтому не EditorFor. Я включил соответствующий HTML, который был создан для этого в моем исходном сообщении. – TheEdge
Прекрасно работает для меня. Проверьте свой снимок экрана - это теперь 'Культура: {en-AU}'? Обратите внимание, что представление не имеет ничего общего с проблемой - его передача «31/1/1960» с допустимой строкой даты для австралийской культуры (и поскольку вы используете плагин jquery, нет реальной необходимости в '[DataType (DataType .Date)] ', единственной целью которой является отображение атрибута' type = "date" ') –
Хммм. По какой-то причине культура по-прежнему Культура: {en}. Проверено дважды, и веб-конфиг определенно . Могу ли я установить культуру в коде? –
TheEdge