如何绕过ASP.NET MVC中特定类型的DataAnnotationsModelValidatorProvider实现自定义验证?

2026-03-30 12:381阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计328个文字,预计阅读时间需要2分钟。

如何绕过ASP.NET MVC中特定类型的DataAnnotationsModelValidatorProvider实现自定义验证?

我有一个自定义CMS系统,其中的内容模型无法通过DataAnnotationsModelValidatorProvider验证。我不想从提供程序中删除DataAnnotationsModelValidatorProvider,因为它还用于其他类型。我想创建一个继承自它的验证器。

我有一个类型“内容”(来自自定义CMS),不能由DataAnnotationsModelValidatorProvider验证.我不想从提供程序中删除DataAnnotationsModelValidatorProvider,因为我需要它用于所有其他类型.

我想过创建一个继承自DataAnnotationsModelValidatorProvider的自定义ModelValidatorProvider,并且在唯一的公共入口点(方法GetValidators)检查containerType是否为“Content”类型,然后返回一个空集合验证器,让另一个自定义ModelValidatorProvider处理此验证具体类型.但我在微软的朋友决定在AssociatedValidatorProvider中密封这个方法,这是DataAnnotationsModelValidatorProvider的基类.

您是否看到了为特定类型跳过DataAnnotationsModelValidatorProvider的其他方法?

如果没有,你能在这里投票给我的建议:aspnet.uservoice.com/forums/41201-asp-net-mvc/suggestions/3571625-remove-sealed-on-method-getvalidators-of-type-asso

这是来自面临类似问题的其他人的讨论:forums.asp.net/t/1751517.aspx/1

你不能直接从ModelValidatorProvider继承吗?然后,您可以根据需要修改GetValidators.例如:

如何绕过ASP.NET MVC中特定类型的DataAnnotationsModelValidatorProvider实现自定义验证?

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); } }

本文共计328个文字,预计阅读时间需要2分钟。

如何绕过ASP.NET MVC中特定类型的DataAnnotationsModelValidatorProvider实现自定义验证?

我有一个自定义CMS系统,其中的内容模型无法通过DataAnnotationsModelValidatorProvider验证。我不想从提供程序中删除DataAnnotationsModelValidatorProvider,因为它还用于其他类型。我想创建一个继承自它的验证器。

我有一个类型“内容”(来自自定义CMS),不能由DataAnnotationsModelValidatorProvider验证.我不想从提供程序中删除DataAnnotationsModelValidatorProvider,因为我需要它用于所有其他类型.

我想过创建一个继承自DataAnnotationsModelValidatorProvider的自定义ModelValidatorProvider,并且在唯一的公共入口点(方法GetValidators)检查containerType是否为“Content”类型,然后返回一个空集合验证器,让另一个自定义ModelValidatorProvider处理此验证具体类型.但我在微软的朋友决定在AssociatedValidatorProvider中密封这个方法,这是DataAnnotationsModelValidatorProvider的基类.

您是否看到了为特定类型跳过DataAnnotationsModelValidatorProvider的其他方法?

如果没有,你能在这里投票给我的建议:aspnet.uservoice.com/forums/41201-asp-net-mvc/suggestions/3571625-remove-sealed-on-method-getvalidators-of-type-asso

这是来自面临类似问题的其他人的讨论:forums.asp.net/t/1751517.aspx/1

你不能直接从ModelValidatorProvider继承吗?然后,您可以根据需要修改GetValidators.例如:

如何绕过ASP.NET MVC中特定类型的DataAnnotationsModelValidatorProvider实现自定义验证?

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); } }