Имеет форму бритвы с двумя полями даты, отображаемыми в виде текстовых полей, используя плагин jQuery datepicker для выбора диапазона данных. Дата начала работает нормально, но дата окончания не проходит проверку и говорит: «Дата окончания поля должна быть датой». Ниже приведен код модели и код .cshtml:Razor DateField validation failed, говорящий «должно быть датой»
[Display(Name = "Start Date")]
public Nullable<DateTime> startDate { get; set; }
[Display(Name = "End Date")]
public Nullable<DateTime> endDate { get; set; }
<div id="dvDateRange">
@Html.TextBoxFor(e => e.startDate, new { @class = "datepicker", Value = Model.startDate.Value.ToString("dd/MM/yyyy") })
<span> to </span>
@Html.TextBoxFor(e => e.endDate, new { @class = "datepicker", Value = Model.endDate.Value.ToString("dd/MM/yyyy") })
</div>
Оба были созданы одинаково, так почему бы дата начала успеха и дата окончания не получится?
Любые идеи?
Редактировать
Так, безусловно, вопрос культуры и, кажется, Chrome, который является причиной проблемы. Сделали следующие изменения и по-прежнему получают такую же проблему.
код модели:
[Display(Name = "Start Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<DateTime> startDate { get; set; }
[Display(Name = "End Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<DateTime> endDate { get; set; }
.cshtml код:
<div id="dvDateRange">
@Html.EditorFor(e => e.startDate, new { @class = "datepicker", Value = Model.startDate.Value.ToString("dd/MM/yyyy") })
<span> to </span>
@Html.EditorFor(e => e.endDate, new { @class = "datepicker", Value = Model.endDate.Value.ToString("dd/MM/yyyy") })
</div>
Datepicker код:
$("#dvDateRange input").datepicker({
showOn: "button",
buttonImage: "/Images/calendar.gif",
buttonImageOnly: true,
dateFormat: "dd/mm/yy"
});
Во всяком случае из наиважнейших настроек культуры в Chrome?
Скорее всего, у вас разные культуры в браузере и на сервере. Возможно, дата начала правильная, потому что день меньше 12 (так что 5 июня 2014 года действительная дата в обоих форматах: 05/06/2014 и 06/05/2014) – ssimeonov
Это кажется разумным. Как заставить его использовать формат? – HuwD
Вы можете проверить это http://stackoverflow.com/questions/1328025/jquery-ui-datepicker-change-date-format – ssimeonov