ASP.NET MVC ожидает, что значение DateTime будет в формате Thread.CurrentLanguage. Пожалуйста, проверьте, какой язык вы используете.
Это так, потому что пользователи могут вводить дату в TextBox и вводить формат своего языка.
Как сказал Питер: в этом случае проще всего использовать строку.
Другой способ - использовать
protected void Application_BeginRequest(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
}
в Global.Asax.
Вы можете переключиться обратно на язык пользователя в фильтре после того, как ModelBinding произойдет:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string language = //find a way to get the language - I have it in the route
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(language);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
base.OnActionExecuting(filterContext)
}
Этот способ сопряжен с некоторыми рисками, но мне проще во многих ситуациях, если modelBinding использует InvariantCulture (представьте десятичные значения в маршруте, дату и время в маршруте ...)