asp.net-mvc – 绕过asp.net mvc中特定类型的DataAnnotationsMod
我有一个类型“内容”(来自自定义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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET – 如何使用来自ASHX处理程序的XML数据响应填充Tre
- asp.net – 仅包含所需参数的自定义MembershipUser
- bin文件中的任何文件是否有任何更改会导致ASP.NET Web应用程
- 如何使用asp.net WebMethod处理FormData AJAX帖子(带有附加
- asp.net – 在usercontrols之间共享数据
- asp.net-mvc – 默认的AccountController示例何时更改?
- 使用Lucene.NET实现简单的站内搜索
- asp.net-mvc – 我是否真的使用ninject和NHibernate为我的模
- 我的Asp.Net MVC 3站点中的奇怪错误
- 如何在asp.net中使用ccavenue支付网关
- asp.net-mvc – ASP.NET MVC HandleError不工作(
- asp.net-mvc-3 – ASP.NET MVC3 Fluent验证构造函
- asp.net-mvc-3 – 新加载页面而不是缓存
- asp.net-mvc – Context.User.Identity.Name为nu
- asp.net-mvc – 获取Jquery中的kendo网格的页面大
- asp.net – IIS 7错误请求响应时 存在于URL中
- asp.net-web-api – 与web api和web api 2之间的
- asp.net-mvc-3 – EntityFramework类的AllowHtml
- asp.net – 作为MVC路径参数的文件路径
- asp.net – 什么叫Page_Load,它是如何做的?