加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 绕过asp.net mvc中特定类型的DataAnnotationsMod

发布时间:2020-12-16 09:24:07 所属栏目:asp.Net 来源:网络整理
导读:我有一个类型“内容”(来自自定义CMS),不能由DataAnnotationsModelValidatorProvider验证.我不想从提供程序中删除DataAnnotationsModelValidatorProvider,因为我需要它用于所有其他类型. 我想过创建一个继承自DataAnnotationsModelValidatorProvider的自定义
我有一个类型“内容”(来自自定义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);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读