在《ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator》中我们介绍了ASP.NET MVC用于Model验证的四种ModelValidator,那么这些ModelValidator是如何被创建的呢?ASP.NET MVC的很多组件(比如ModelBinder和Filter)都采用了基于Provider的提供机制,这篇文章为你讲述这些ModelValidator对应的ModelValidatorProvider。[本文已经同步到《How ASP.NET MVC Works?》中]
目录
一、ModelValidatorProvider
二、DataAnnotationsModelValidator
三、ClientDataTypeModelValidatorProvider
四、DataErrorInfoModelValidatorProvider
我们通过注册ModelValidatorProvider来创建相应的ModelValidator,所有的ModelValidatorProvider直接或者间接地继承类型ModelValidatorProvider。如下面的代码片断所示,ModelValidator的提供实现在抽象方法GetValidators种,返回的是一个ModelValidator集合。
class ModelValidatorProvider
2: {
abstract IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ModelBindingExecutionContext context);
4: }