Как я могу сказать своему контроллеру / модели, какую культуру он должен ожидать для синтаксического анализа даты и времени?
Я использовал некоторые из этого сообщения для реализации jquery datepicker в мое приложение mvc.
Когда я отправляю дату, она «теряется при переводе», я не использую форматирование даты в США, поэтому, когда она отправляется моему контроллеру, она просто становится нулевой.
У меня есть форма, в которой пользователь выбирает дату:
@using (Html.BeginForm("List", "Meter", FormMethod.Get))
{
@Html.LabelFor(m => m.StartDate, "From:")
@Html.EditorFor(m => m.StartDate)
@Html.LabelFor(m => m.EndDate, "To:")
@Html.EditorFor(m => m.EndDate)
}
Я сделал для этого шаблон редактирования, чтобы реализовать jquery datepicker:
@model DateTime
@Html.TextBox("", Model.ToString("dd-MM-yyyy"), new { @class = "date" })
Затем я создаю виджеты datepicker, подобные этому.
$(document).ready(function () {
$('.date').datepicker({ dateFormat: "dd-mm-yy" });
});
Все это работает нормально.
Вот где начинаются проблемы, это мой контроллер:
[HttpGet]
public ActionResult List(DateTime? startDate = null, DateTime? endDate = null)
{
//This is where startDate and endDate becomes null if the dates dont have the expected formatting.
}
Вот почему я хотел бы как-то сказать своему контроллеру, какой культуре он должен ожидать? Моя модель неверна? могу ли я как-то сказать ему, какую культуру использовать, например, с атрибутами аннотации данных?
public class MeterViewModel {
[Required]
public DateTime StartDate { get; set; }
[Required]
public DateTime EndDate { get; set; }
}
Изменить: эта ссылка объясняет мою проблему и является очень хорошим решением для нее. Спасибо gdoron