FluentValidation:自定义验证器工厂和客户端验证

时间:2012-08-19 19:52:53

标签: asp.net-mvc structuremap fluentvalidation

我在asp net mvc 3应用程序中有自己的ValidatorFactory和structuremap实现。

public class StructureMapValidatorFactory : ValidatorFactoryBase
{
    public override IValidator CreateInstance(Type validatorType)
    {
        return ObjectFactory.TryGetInstance(validatorType) as IValidator;
    }
}

在全球的asax中......

FluentValidationModelValidatorProvider.Configure(provider => 
{ 
  provider.ValidatorFactory = new StructureMapValidatorFactory(); 
});

好吧,使用这种组合客户端验证不起作用,如果我使用标准提供程序配置,客户端验证工作正常。

这里有解决方法吗?

2 个答案:

答案 0 :(得分:1)

确保您已正确配置DI框架以解析验证器。如果ObjectFactory.TryGetInstance(validatorType)返回null,则它将不起作用,因为不会有任何与模型关联的验证器,也不会发出元数据。

答案 1 :(得分:0)

最后,忘了在我的boostrap中调用Configure方法。所以,

ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(new StructureMapValidatorFactory()));

然后

FluentValidationModelValidatorProvider.Configure();