asp.net-mvc-3 - 如何阻止 Ninject 覆盖自定义 DataAnnotationsModelValidatorProvider?

标签 asp.net-mvc-3 ninject customvalidator ninject.web.mvc

我有一个自定义的 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/

相关文章:

.net - 将依赖注入(inject)与 Http 处理程序一起使用

java - hibernate validator : Custom Meassages

asp.net - 从 Javascript 更新 ValidatorCallOut 错误消息

asp.net-mvc - MVC 3 在 MVC4 安装后停止工作

c# - 将 ExpandoObject 转换为类型,在客户端还是服务器端,哪个更高效、更省时?

c# - Ninject 'Get'方法可以缓存值吗?

laravel - 只有在所有其他规则都通过时才添加验证规则,或者在 Laravel 5.7 中出现第一个错误时停止验证整个属性集

asp.net - 找不到指定文化或中性文化的任何资源

c# - 如何实现MVC寻呼机?

c# - Ninject:单例绑定(bind)语法?