У меня есть представление MVC 3, в котором отображается список элементов, которые могут быть отфильтрованы по дате.
Фильтр - это текстовое поле, которое было преобразовано jQueryUI в средство выбора даты.
Просмотр:
<%= Html.TextBoxFor(model => model.ReportedDate, new { @class = "datepicker" })%>
Сценарий:
$(".datepicker").datepicker({
dateFormat: 'dd/mm/yy',
changeYear: true,
changeMonth: true
});
После нажатия кнопки я беру значение текстового поля и отправляю его в действие моего контроллера в качестве параметра строки запросазапрос GET:
MyController/Search?reportedDate=30/05/2011
Действие контроллера:
public ActionResult Search(DateTime? reportedDate)
Исходя из этого, я ожидаю, что механизм связывания модели по умолчанию преобразует параметр запроса reportedDate
в обнуляемый DateTime (в данном контексте ноль).представляя все даты или без фильтра).
Однако это не тот случай.reportedDate
всегда равно нулю.Я могу углубиться в Request.QueryString
и выполнить преобразование вручную, используя DateTime.TryParse
, что является моей текущей работой, но я не понимаю, почему она вначале дает сбой.
Нет никакой разницы в формате даты между клиентом и сервером, и есть другие (здесь опущены, но присутствуют в фактическом коде) параметры фильтра других типов данных (string и int), и они обрабатываются без проблем.
Есть какие-нибудь предложения, почему DateTime проблематичен?