我无法使用我的模型中的数据注释指定验证DateTime输入值的错误消息。我真的想使用适当的DateTime验证器(而不是正则表达式等)。
[DataType(DataType.DateTime,ErrorMessage = "A valid Date or Date and Time must be entered eg. January 1,2014 12:00AM")] public DateTime Date { get; set; }
我仍然得到默认日期验证消息“字段日期必须是日期”。
我错过了什么吗?
@R_502_323@
我有一个脏的解决方案。
创建自定义模型binder:
public class CustomModelBinder<T> : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); if(value != null && !String.IsNullOrEmpty(value.AttemptedValue)) { T temp = default(T); try { temp = ( T )TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value.AttemptedValue); } catch { bindingContext.ModelState.AddModelError(bindingContext.ModelName,"A valid Date or Date and Time must be entered eg. January 1,2014 12:00AM"); bindingContext.ModelState.SetModelValue(bindingContext.ModelName,value); } return temp; } return base.BindModel(controllerContext,bindingContext); } }
然后在Global.asax.cs中:
protected void Application_Start() { //... ModelBinders.Binders.Add(typeof(DateTime),new CustomModelBinder<DateTime>());