通过前面的介绍我们知道ModelValidatorProviders的静态只读Providers维护着一个全局的ModelValidatorProvider列表,最终用于Model验证的ModelValidator都是通过这些ModelValidatorProvider来提供的。对于该列表默认包含的三种ModelValidatorProvider来说,DataAnnotationsModelValidatorProvider无疑是最重要的,ASP.NET MVC默认提供的基于数据标注特性的声明式Model验证就是通过DataAnnotationsModelValidatorProvider提供的DataAnnotationsModelValidator来实现的。[本文已经同步到《How ASP.NET MVC Works?》中]
目录
一、ValidationAttribute特性
二、验证消息的定义
三、验证的执行
四、预定义ValidationAttribute
五、应用ValidationAttribute特性的唯一性
与通过数据标注特性定义Model元数据类似,我们可以在作为Model的数据类型及其属性上应用相应的标注特性来定义Model验证规则。所有的验证特性都直接或者间接继承自抽象类型System.ComponentModel.DataAnnotations.ValidationAttribute。如下面的代码片断所示,ValidationAttribute具有一个字符串类型的ErrorMessage属性用于指定验证错误消息。出于对本地化或者对错误消息单独维护的需要,我们可以采用资源文件的方式来保存错误消息,在这种情况下我们只需要通过ErrorMessageResourceName和ErrorMessageResourceType这两个属性指定错误消息所在资源项的名称和类型即可。
2: {
string ErrorMessage { get; set; }
string ErrorMessageResourceName { get; set; }
public Type ErrorMessageResourceType { get; set; }
string ErrorMessageString {get;}
7:
string name);
9:
value);
value, ValidationContext validationContext)
12:
string name);
value, ValidationContext validationContext);
15: }