ASP.NET MVC expects the DateTime value to be in the format of Thread.CurrentLanguage. Please check what language you are using.
Its like that because users might enter a Date in a TextBox and the they would enter the format of their language.
Like Pieter said: an easy way is to use a string in this case.
Another way is to use
protected void Application_BeginRequest(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
}
in Global.Asax.
You can switch back to the language of the user in a filter after the ModelBinding happend:
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)
}
This way has some risks, but I find it easier in lots of situations if modelBinding uses InvariantCulture (think of decimal values in the route, datetime in the route...)