【问题标题】:MVC Datatype ErrorMessageMVC 数据类型错误消息
【发布时间】:2015-10-16 22:40:38
【问题描述】:

数据类型错误消息不起作用。 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="" />

有什么想法吗?

【问题讨论】:

  • 感谢 Archil,但是是错误消息的挖掘吗?另外,为什么属性 [Required(ErrorMessageResourceType = typeof(Messages.GeneralMessages), ErrorMessageResourceName = "Required")] 工作正常?
  • 我明白了,在 MVC 4 中可以本地化默认错误消息。 link

标签: asp.net-mvc


【解决方案1】:

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

【讨论】:

  • 我发现的问题是无论数据是否有效,它都会显示错误。
【解决方案2】:

简答: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; }

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

【讨论】:

  • 好吧,有道理,但是是ErrorMessage的挖掘吗?
  • 当您使用 [DataType(DataType.Date)] 装饰模型属性时,ASP.NET MVC 4 中的默认模板会生成 type="date" 的输入字段。支持 HTML5 的浏览器(例如 Google Chrome)使用日期选择器呈现此输入字段。为了正确显示日期,值必须格式化为 2012-09-28
  • 我已经用示例和更多解释更新了我的答案。
  • 好的,谢谢 ElYusubov,经过圆顶研究后我发现此消息是来自 Framework 的内部消息,因此唯一的解决方案是实现自定义验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多