自定义 DataAnnotationsModelValidatorProvider 未触发
我创建了一个自定义 DataAnnotationsModelValidatorProvider
:
public class CustomValidatorProvider : DataAnnotationsModelValidatorProvider
{
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable<Attribute> attributes)
{
//Do custom stuff...
return base.GetValidators(metadata, context, attributes);
}
}
并且我已在我的 Global.asax
中注册了它:
ModelValidatorProviders.Providers.Add(new CustomValidatorProvider());
我在 GetValidators
方法中放置了一个断点,但是它永远不会被击中。我的理解是,应该为模型中的每个属性执行此自定义验证器提供程序。我错过了什么吗?
I've created a custom DataAnnotationsModelValidatorProvider
:
public class CustomValidatorProvider : DataAnnotationsModelValidatorProvider
{
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable<Attribute> attributes)
{
//Do custom stuff...
return base.GetValidators(metadata, context, attributes);
}
}
And I've registered it in my Global.asax
:
ModelValidatorProviders.Providers.Add(new CustomValidatorProvider());
I put a breakpoint in the GetValidators
method but it is never hit. My understanding is that this custom validator provider should be executed for each property in my model. Am I missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您需要从
ModelValidatorProvider
而不是DataAnnotationsModelValidatorProvider
进行覆盖。并且方法签名不应该有 attribute 参数并且应该是公共的:I think you need to override from
ModelValidatorProvider
and notDataAnnotationsModelValidatorProvider
. And the method signature should not have the attributes parameter and should be public:ModelValidatorProviders.Providers 已包含 DataAnnotationsModelValidatorProvider。
只需在添加自定义 DataAnnotationsModelValidatorProvider 之前将其删除即可。
ModelValidatorProviders.Providers already contain a DataAnnotationsModelValidatorProvider.
Simply remove it before adding your custom DataAnnotationsModelValidatorProvider.