哪个数据注释属性创建此验证属性?
Which Data Annotation attribute creates this validation attribute?
假设我们有这样一个模型:
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 的 "unobtrusive" jQuery 验证集成注入的。
那么,什么数据注释会覆盖 HTML 属性中的措辞?
例如,[Required(ErrorMessage="This field is required!")]
将覆盖标准 "The field {0} is required." 消息。
失败的尝试:
[DataType(DataType.Date, ErrorMessage = "Must be a valid date.")]
似乎没有对客户端验证做任何事情。
[DisplayName("...")]
更改模式的通配符部分,但显然不会影响模式本身。
data-val-date
属性是由框架添加的,因为 属性 是 DateTime?
的类型。它是 HtmlHelper
class 的 GetUnobtrusiveValidationAttributes()
方法,它实际上生成所有 data-val-*
属性。
请注意,[DataType(DataType.Date, "...")]
是 EditorFor()
方法用来添加 type="date"
属性的属性,该属性又会生成浏览器 HTML-5 日期选择器(如果它浏览器支持),与客户端验证无关。
默认错误消息在资源文件中定义,您可以创建自己的错误消息来覆盖默认值。
在 App_GlobalResources
文件夹中创建(比如)MyResources.resx
(您可能需要创建此文件夹)并添加以下 FieldMustBeDate
键和您的消息(默认消息是如下所示)
FieldMustBeDate : The field {0} must be a date
并在Global.asax
的Application_Start()
中添加以下内容
ClientDataTypeModelValidatorProvider.ResourceClassKey = "MyResources";
DefaultModelBinder.ResourceClassKey = "MyResources";
请注意,您还可以使用 PropertyValueRequired
键
覆盖 [Required]
属性的默认错误消息
假设我们有这样一个模型:
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 的 "unobtrusive" jQuery 验证集成注入的。
那么,什么数据注释会覆盖 HTML 属性中的措辞?
例如,[Required(ErrorMessage="This field is required!")]
将覆盖标准 "The field {0} is required." 消息。
失败的尝试:
[DataType(DataType.Date, ErrorMessage = "Must be a valid date.")]
似乎没有对客户端验证做任何事情。[DisplayName("...")]
更改模式的通配符部分,但显然不会影响模式本身。
data-val-date
属性是由框架添加的,因为 属性 是 DateTime?
的类型。它是 HtmlHelper
class 的 GetUnobtrusiveValidationAttributes()
方法,它实际上生成所有 data-val-*
属性。
请注意,[DataType(DataType.Date, "...")]
是 EditorFor()
方法用来添加 type="date"
属性的属性,该属性又会生成浏览器 HTML-5 日期选择器(如果它浏览器支持),与客户端验证无关。
默认错误消息在资源文件中定义,您可以创建自己的错误消息来覆盖默认值。
在 App_GlobalResources
文件夹中创建(比如)MyResources.resx
(您可能需要创建此文件夹)并添加以下 FieldMustBeDate
键和您的消息(默认消息是如下所示)
FieldMustBeDate : The field {0} must be a date
并在Global.asax
Application_Start()
中添加以下内容
ClientDataTypeModelValidatorProvider.ResourceClassKey = "MyResources";
DefaultModelBinder.ResourceClassKey = "MyResources";
请注意,您还可以使用 PropertyValueRequired
键
[Required]
属性的默认错误消息