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