asp.net mvc 验证
通过ModelMetadataProviders.Current.GetMetadataForType(null, dataType)方法来获取类型的ModelMetaData,通过ModelValidatorProvider的GetValidators(metadata,ControllerContext)可以获得所有的IEnumerable<ModelValidator>,最终在客户端遍历IEnumerable<ModelValidator>中的ModelValidator,使用其validator.Validate(container)来获取ModelValidationResult,
<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Name">Contact.Name</span>
DataAnnotationsModelValidator通过其提供者DataAnnotationsModelValidatorProvider创建的。后者继承自AssociationValidatorProvider,AssociationValidatorProvider可以根据ModelMetadata来提取所有的特性。由于所有的特性都继承DataAnnotationsModelValidator<TAttribute>:DataAnnotationsModelValidator
从而可以得到所用的DataAnnotationsModelValidator。