Я написал пользовательский связыватель модели, который должен отображать даты, поступающие из строк URL-адресов (GET) в соответствии с текущей культурой (здесь приведен фрагмент кода: связыватель модели по умолчанию не учитывает текущую культуру, если вы используете GEThttp-call ...).
public class DateTimeModelBinder : IModelBinder
{
#region IModelBinder Members
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext.HttpContext.Request.HttpMethod == "GET")
{
string theDate = controllerContext.HttpContext.Request.Form[bindingContext.ModelName];
DateTime dt = new DateTime();
bool success = DateTime.TryParse(theDate, System.Globalization.CultureInfo.CurrentUICulture, System.Globalization.DateTimeStyles.None, out dt);
if (success)
{
return dt;
}
else
{
return null;
}
}
return null; // Oooops...
}
#endregion
}
Я зарегистрировал подшивку модели в global.asax:
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeModelBinder());
Теперь проблема возникает в последнем return null;
.Если я использую другие формы с POST, он перезапишет уже сопоставленные значения с нулем.Как я могу избежать этого?
Thx для любых входов.sl3dg3