Jquery 哪个数据注释属性创建此验证属性?

Jquery 哪个数据注释属性创建此验证属性?,jquery,asp.net-mvc,unobtrusive-validation,Jquery,Asp.net Mvc,Unobtrusive Validation,假设我们有这样一个模型: public class TheViewModel { public string DateTime? Image_Date { get; set; } } 它被添加到Razor视图中,如下所示: Html.TextBoxFor(model => model.Image_Date) 然后在浏览器中呈现以下内容: <input data-val="true" data-val-date="The field Image_Date must be a

假设我们有这样一个模型:

public class TheViewModel
{
    public string DateTime? Image_Date { get; set; }
}
它被添加到Razor视图中,如下所示:

Html.TextBoxFor(model => model.Image_Date)
然后在浏览器中呈现以下内容:

<input data-val="true" data-val-date="The field Image_Date must be a date." id="Image_Date" name="Image_Date" type="text" value="" />

属性
data val date
是我感兴趣的。很明显,MVC的“不引人注目的”jQuery验证集成正在注入它

那么,什么样的数据注释将覆盖HTML属性中的措辞呢? 例如,
[Required(ErrorMessage=“This field is Required!”)]
将覆盖标准的“字段{0}is Required.”消息


失败的尝试:

  • [DataType(DataType.Date,ErrorMessage=“必须是有效的日期。”)]
    似乎对客户端验证没有任何作用

  • [DisplayName(“…”)
    更改模式的通配符部分,但显然不会影响模式本身


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

    请注意,
    [DataType(DataType.Date,“…”)
    EditorFor()
    方法用于添加
    type=“Date”
    属性的一个属性,该属性反过来生成浏览器HTML-5日期选择器(如果浏览器支持),并且与客户端验证无关

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

    App\u GlobalResources
    文件夹中创建(比如)一个
    MyResources.resx
    (您可能需要创建此文件夹),并添加以下
    FieldMustBeDate
    键和您的消息(默认消息如下所示)

    并在
    Global.asax

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

    注意:您还可以使用
    PropertyValueRequired
    键覆盖
    [Required]
    属性的默认错误消息听起来您可能需要手动修复它,我将继续并标记此已回答,因为这似乎是正确的,但是,您能否说明如何找到
    字段mustBeDate
    ?它在(第445行)中定义并通过访问。(第97行)ASAIK,它们是您可以覆盖的4个默认值-
    FieldMustBeDate
    FieldMustBeNumeric
    PropertyValueInvalid
    PropertyValueRequired
    覆盖默认的必需消息,我一点也不高兴。您对
    PropertyValueRequired
    确定吗?@Kivin,几乎可以肯定,但我认为您需要在
    Global.asax
    -
    DefaultModelBinder.ResourceClassKey=“MyResources”中增加一个设置PropertyValueInvalid
    PropertyValueRequired
    在不同的命名空间中定义(
    System.ComponentModel.DataAnnotations
    )。我目前正在休假,所以目前无法确认,但发现有更多信息
    ClientDataTypeModelValidatorProvider.ResourceClassKey = "MyResources";
    DefaultModelBinder.ResourceClassKey = "MyResources";