W3M*_*Max 3 validation asp.net-mvc
我有一个类型"内容"(来自自定义CMS),不能由DataAnnotationsModelValidatorProvider验证.我不想从提供程序中删除DataAnnotationsModelValidatorProvider,因为我需要它用于所有其他类型.
我想创建一个继承自DataAnnotationsModelValidatorProvider的自定义ModelValidatorProvider,并且在唯一的公共入口点(方法GetValidators)检查containerType是否为"Content"类型,然后返回一个空集合验证器,让另一个自定义ModelValidatorProvider处理此验证具体类型.但我在微软的朋友决定在AssociatedValidatorProvider中密封这个方法,这是DataAnnotationsModelValidatorProvider的基类.
您是否看到了为特定类型跳过DataAnnotationsModelValidatorProvider的其他方法?
如果没有,你能否在这里投票赞成我的建议:http://aspnet.uservoice.com/forums/41201-asp-net-mvc/suggestions/3571625-remove-sealed-on-method-getvalidators-of-type- ASSO
这是来自面临类似问题的其他人的讨论:http://forums.asp.net/t/1751517.aspx/1
难道你不能直接继承ModelValidatorProvider吗?然后,您可以GetValidators根据需要进行修改.例如:
public class CustomValidatorProvider : ModelValidatorProvider
{
private readonly DataAnnotationsModelValidatorProvider _provider = new DataAnnotationsModelValidatorProvider();
public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context)
{
if (metadata.ModelType == typeof(Content) || metadata.ContainerType == typeof(Content))
{
return Enumerable.Empty<ModelValidator>();
}
return _provider.GetValidators(metadata, context);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |