7

数据类型错误消息不起作用。MVC4 DataType ErrorMessage 似乎不起作用。我有这个 dataannotation 属性:

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

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

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

任何想法?

4

2 回答 2

8

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

于 2013-08-24T23:43:32.993 回答
6

简短回答:的目的DataType.DateTime不是验证您DateTime输入的生日属性。这就是原因。它所做的只是在将 DateTime 显示在您的视图上之前对其进行格式化。

您还需要[Required]在此之上具有属性。

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

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

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

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

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

于 2012-12-17T15:43:06.360 回答