在未定义验证的类上触发Fluent验证

时间:2011-10-18 13:10:14

标签: asp.net-mvc ninject fluentvalidation

我正在使用mvc3 + fluent validaton + ninject

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

  

>激活IValidator {Pager}

时出错

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

bool IsValidatingProperty(ModelMetadata metadata) {
            return metadata.ContainerType != null && !string.IsNullOrEmpty(metadata.PropertyName);
    }

我想有一些关于这个问题的配置技巧,简而言之:我想仅在我定义了FV规则的对象上触发FV ......

Thanx;)

1 个答案:

答案 0 :(得分:1)

根据杰里米的建议

http://fluentvalidation.codeplex.com/workitem/7091

我发现解决问题的方法并不那么难:

    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;
        }
    }