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

Asp.net mvc 3 如何阻止Ninject覆盖自定义DataAnnotationsModelValidatorProvider?,asp.net-mvc-3,ninject,customvalidator,ninject.web.mvc,Asp.net Mvc 3,Ninject,Customvalidator,Ninject.web.mvc,我有一个定制的DataAnnotationsModelValidatorProvider,用于以更动态的方式进行模型验证,而不仅仅是添加属性。我尝试将我的提供添加到global.asax.cs,如下所示: ModelValidatorProviders.Providers.Clear(); ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider()); 但一旦加载表单,就会出现一个错误,提示“不引人注目的客户端验

我有一个定制的DataAnnotationsModelValidatorProvider,用于以更动态的方式进行模型验证,而不仅仅是添加属性。我尝试将我的提供添加到global.asax.cs,如下所示:

ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider());
但一旦加载表单,就会出现一个错误,提示“不引人注目的客户端验证规则中的验证类型名称必须是唯一的。以下验证类型被多次看到:必需”

根据,这是因为Ninject覆盖了自定义验证器提供程序

我是MVC的新手,似乎找不到办法告诉Ninject也接受我的自定义提供者,我该如何解决这个问题


作为记录:我不希望使用Fluentvalidation.net,我希望坚持默认的MVC验证(在大多数情况下)。

将提供商的注册更改为

Rebind<ModelValidatorProvider>().To<AttributeValidatorProvider>();
Rebind().To();
还有另一种方法(在MVC4中肯定有效):

找到继承
idependencysolver
接口并添加到构造函数
\u kernel.Unbind()的类-您只需取消绑定ninject验证器,就不应该与默认验证器有任何冲突

在我的例子中,我的构造函数如下所示:

public NinjectDependencyResolver()
{
       _kernel = new StandardKernel();
       _kernel.Unbind<ModelValidatorProvider>();
       AddBindings();
}
public NinjectDependencyResolver()
{
_内核=新的标准内核();
_Unbind();
AddBindings();
}

我似乎无法让Ninject使用内置的DataAnnotationsModelValidatorProvider,即使像您提到的那样尝试重新绑定。Ninject似乎是开箱即用,破坏了验证。Ninject的默认设置是什么,以及如何将内置的DataAnnotations与Ninject一起使用。我已经搜索了很多,没有找到文档、博客文章或有工作解决方案的文章。看看示例应用程序:谢谢!我丢失了执行程序集的负载;只有我的服务和模块加载。我也有这个问题,但在稍微不同的情况下,你能看看我下面的答案吗?这解决了我的问题。但是,它会对Ninject产生什么影响?我在使用
ASP.NET MVC 5.2.3.0
Ninject.Web 3.0
时遇到了同样的问题,您的解决方案成功了。非常感谢。