哪个Data Annotation属性创建此validation属性?

假设我们有这样的模型:

public class TheViewModel { public string DateTime? Image_Date { get; set; } } 

它被添加到Razor视图中,如下所示:

 Html.TextBoxFor(model => model.Image_Date) 

然后在浏览器中呈现以下内容:

  

属性data-val-date是我感兴趣的。它显然是由MVC的“不引人注目的”jQueryvalidation集成注入的。

那么,哪些数据注释会覆盖HTML属性中的措辞?

例如, [Required(ErrorMessage="This field is required!")]将覆盖标准“字段{0}是必需的”。 信息。


尝试失败:

  1. [DataType(DataType.Date, ErrorMessage = "Must be a valid date.")]似乎对客户端validation没有任何作用。

  2. [DisplayName("...")]更改模式的通配符部分,但显然不会影响模式本身。

data-val-date属性是由框架添加的,因为该属性是DateTime?类型DateTime? 。 它是HtmlHelper类的GetUnobtrusiveValidationAttributes()方法,它实际上生成所有data-val-*属性。

请注意, [DataType(DataType.Date, "...")]EditorFor()方法用于添加type="date"属性的属性,该属性又生成浏览器HTML-5 datepicker(如果其支持的话)浏览器)并且与客户端validation无关。

默认错误消息在资源文件中定义,您可以创建自己的错误消息来覆盖默认值。

App_GlobalResources文件夹中创建(比如说) MyResources.resx (您可能需要创建此文件夹)并添加以下FieldMustBeDate键和您的消息(默认消息如下所示)

 FieldMustBeDate : The field {0} must be a date 

并在Global.asaxApplication_Start()中添加以下内容

 ClientDataTypeModelValidatorProvider.ResourceClassKey = "MyResources"; DefaultModelBinder.ResourceClassKey = "MyResources"; 

请注意,您还可以使用PropertyValueRequired键覆盖[Required]属性的默认错误消息