MVC数据类型ErrorMessage

Don*_*ald 7 asp.net-mvc

DataType ErrorMessage不起作用.MVC4 DataType ErrorMessage似乎不起作用.我有这个dataannotation属性:

[DataType(DataType.DateTime, ErrorMessage = "Invalid date")]
public override DateTime? BirthDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

但客户端验证返回此错误:

BirthDate字段必须是日期.

这是Html部分:

 <input Value="" class="date" data-val="true" data-val-date="The field BirthDate  must be a date." data-val-required="El campo Fecha nacimiento es obligatorio" id="Patient_BirthDate" name="Patient.BirthDate" type="text" value="" />
Run Code Online (Sandbox Code Playgroud)

任何的想法?

jmo*_*gro 8

在MVC 4上,我能够在View with Html.ValidationMessageFor中更改错误消息.
看一个例子:@Html.ValidationMessageFor(model => model.FechaDesde, "Fecha Inválida")


EL *_*bov 6

简答:目的DataType.DateTime不是验证您DateTime的生日财产条目.这就是原因.它的作用是在将DateTime显示在视图上之前对其进行格式化.

你需要的是拥有[Required]属性.

但是,我通常喜欢使用的Jquery Datepicker ,它甚至不允许用户输入任何文本,而是一个有效的日期.

编辑:当您使用[DataType(DataType.Date)]ASP.NET MVC 4中的默认模板装饰模型属性时,会生成type ="date"的输入字段.支持HTML5的浏览器(例如Google Chrome)会使用日期选择器呈现此输入字段.

您可以使用代码强制执行此操作:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? BirthDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

为了正确显示日期,必须将值格式化为 2012-09-28

  • 好吧,谢谢ElYusubov,在圆顶研究后我发现这条消息是来自Framework的内部消息,因此唯一的解决方案是实现自定义验证. (2认同)