Проблема с культурой даты и времени в ASP.NET MVC при передаче значения обратно контроллеру

Как я могу сказать своему контроллеру / модели, какую культуру он должен ожидать для синтаксического анализа даты и времени?

Я использовал некоторые из этого сообщения для реализации 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

18
задан Jim Wolff 9 November 2011 в 07:03
поделиться