Asp.net mvc MVC数据类型错误消息

Asp.net mvc MVC数据类型错误消息,asp.net-mvc,Asp.net Mvc,数据类型ErrorMessage不工作。 MVC4数据类型ErrorMessage似乎不起作用。 我有以下dataannotation属性: [DataType(DataType.DateTime, ErrorMessage = "Invalid date")] public override DateTime? BirthDate { get; set; } 但是客户端验证返回以下错误: 字段生日必须是一个日期 这是Html部分: <input Value="" class="dat

数据类型ErrorMessage不工作。 MVC4数据类型ErrorMessage似乎不起作用。 我有以下dataannotation属性:

[DataType(DataType.DateTime, ErrorMessage = "Invalid date")]
public override DateTime? BirthDate { get; set; }
但是客户端验证返回以下错误:

字段生日必须是一个日期

这是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="" />


有什么想法吗?

简短回答:数据类型的目的。DateTime不是验证生日属性的
DateTime
条目。这就是原因。它所做的只是在视图上显示日期时间之前格式化日期时间

您需要的是在该属性的顶部设置
[Required]
属性

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


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

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

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

为了正确显示日期,必须将值的格式设置为MVC 4上的
2012-09-28

,我可以使用Html.ValidationMessageFor更改视图中的错误消息。
参见一个示例:
@Html.ValidationMessageFor(model=>model.FechaDesde,“Fecha Inválida”)

可能重复感谢Archil,但错误消息的挖掘是什么?另外,为什么属性[Required(ErrorMessageResourceType=typeof(Messages.GeneralMessages),ErrorMessageResourceName=“Required”)]工作正常?我明白了,在MVC4中,可以本地化默认错误消息。好的,这是有道理的,但是错误消息的挖掘是什么?当你用[DataType(DataType.Date)]装饰模型属性时,ASP.NET MVC 4中的默认模板会生成一个type=“Date”的输入字段。支持HTML5(如谷歌浏览器)的浏览器使用日期选择器呈现此输入字段。为了正确显示日期,值的格式必须为2012-09-28我已经用示例和更多解释更新了我的答案。好的,谢谢ElYusubov,在dome research之后,我发现此消息是来自Framework的内部消息,因此,唯一的解决方案是实现自定义验证。我发现的问题是,无论数据是否有效,它都会显示错误。