我有一个自定义的 DataAnnotationsModelValidatorProvider,用于以更动态的方式进行模型验证,然后仅添加属性。我尝试将我的提供添加到 global.asax.cs 中,如下所示:
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider());
但是,一旦加载表单,我就会收到一条错误消息,提示“非侵入式客户端验证规则中的验证类型名称必须是唯一的。以下验证类型多次出现:必需”。
根据a comment on this blog ,这是因为 Ninject 正在重写自定义验证器提供程序。
我对 MVC 相当陌生,我似乎找不到一种方法来告诉 Ninject 也接受我的自定义提供程序,我将如何解决这个问题?
郑重声明:我不想使用 Fluentvalidation.net,我想坚持使用默认的 MVC 验证(大部分情况下)。
最佳答案
还有另一种方法(肯定适用于 MVC 4):
找到继承 IdependencyResolver
的类接口(interface)并添加到构造函数 _kernel.Unbind<ModelValidatorProvider>();
- 你只需解绑 ninject 验证器,就不会与默认验证器发生冲突。
就我而言,我的构造函数如下所示:
public NinjectDependencyResolver()
{
_kernel = new StandardKernel();
_kernel.Unbind<ModelValidatorProvider>();
AddBindings();
}
关于asp.net-mvc-3 - 如何阻止 Ninject 覆盖自定义 DataAnnotationsModelValidatorProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356811/