我创建了一个 DefaultModelBinder 来使用 DateTime
格式为“dd-MM-yyyy”
这个 DefaultModelBinder 可以在 IE 和 Chrome 上正常工作,
但它在 Firefox 中不起作用??
有关此的任何帮助。
更新:{按要求}
public class DateTimeBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var vpr = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (vpr == null)
{
return null;
}
var date = vpr.AttemptedValue;
if (String.IsNullOrEmpty(date))
{
return null;
}
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, bindingContext.ValueProvider.GetValue(bindingContext.ModelName));
try
{
var realDate = DateTime.Parse(date, System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("en-GB"));
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, new ValueProviderResult(date, realDate.ToString("yyyy-MM-dd hh:mm:ss"), System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("en-GB")));
return realDate;
}
catch (Exception e)
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, e);
return null;
}
}
}
全球.asax:
ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());
更新 2:[图片添加]
火狐:
这是 Firefox 中的验证问题。
IE浏览器 :
注意:请求没有被发送到服务器,这是来自 MVC 的客户端验证,它在 FIREFOX 中显示错误。