Asp.net mvc 在不使用';没有定义验证

Asp.net mvc 在不使用';没有定义验证,asp.net-mvc,ninject,fluentvalidation,Asp.net Mvc,Ninject,Fluentvalidation,我使用的是mvc3+fluent Validation+ninject 我有一个简单的控制器和没有配置验证的模型(Pager)…但该对象也会触发流畅的验证,因此代码会中断并引发异常: >激活IValidator{Pager}时出错 我在源代码中查找并发现了这个方法,该方法假设检查是否需要验证某些属性,但它只检查值是否不为null: bool IsValidatingProperty(ModelMetadata metadata) { return metadata.Con

我使用的是mvc3+fluent Validation+ninject

我有一个简单的控制器和没有配置验证的模型(Pager)…但该对象也会触发流畅的验证,因此代码会中断并引发异常:

>激活IValidator{Pager}时出错

我在源代码中查找并发现了这个方法,该方法假设检查是否需要验证某些属性,但它只检查值是否不为null:

bool IsValidatingProperty(ModelMetadata metadata) {
            return metadata.ContainerType != null && !string.IsNullOrEmpty(metadata.PropertyName);
    }
简言之,我想围绕这个问题有一些配置技巧:我只想在定义了FV规则的对象上触发FV


Thanx;)

根据杰里米的建议

我发现解决问题并不难:

    public class TestValidatorFactory : ValidatorFactoryBase
    {
        private readonly IKernel Container;

        public TestValidatorFactory(IKernel container)
        {
            Container = container;
        }

        public override IValidator CreateInstance(Type validatorType)
        {
            var bindings = (List<IBinding>)Container.GetBindings(validatorType);
            if (bindings.Count > 0) return (IValidator)Container.Get(validatorType);
            else return null;
        }
    }
公共类TestValidatorFactory:ValidatorFactoryBase
{
专用只读IKernel容器;
公共TestValidator工厂(IKernel容器)
{
容器=容器;
}
公共覆盖IValidator CreateInstance(类型validatorType)
{
var bindings=(List)Container.GetBindings(validatorType);
如果(bindings.Count>0)返回(IValidator)Container.Get(validatorType);
否则返回null;
}
}