使用Fluent验证时,禁用默认的DataAnnotations不显眼验证

时间:2012-08-15 13:04:03

标签: c# asp.net-mvc data-annotations fluentvalidation

我在MVC中使用Fluent Validation进行服务器端和不显眼的客户端验证。我不得不扩展它以满足业务需求,并且遇到了默认DataAnnotations验证的问题。所以我只想完全禁用内置的DataAnnotations提供程序,并使用我自己的Fluent Validation扩展来进行此验证。

基本上,我需要停止呈现值类型的内置不显眼data-val-属性,例如数字和日期(data-val-number,data-val-date,data-val-required )。

我试过了:

ModelValidatorProviders.Providers.Clear();

这似乎摆脱了数字/日期属性,但所需的属性仍然存在。

我试过了:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

但这似乎没有做任何事情。也许我的位置/顺序错误了?

1 个答案:

答案 0 :(得分:2)

使用Fluent验证,它有自己的标志用于禁用必需的属性,必须使用FluentValidationModelValidatorProvider进行配置。以下代码将处理默认类型属性以及必需属性:

//Don't use built-in type attributes (data-val-number, data-val-date)
ModelValidatorProviders.Providers.Clear();

FluentValidationModelValidatorProvider.Configure(
    provider =>
    {
        provider.ValidatorFactory = new UnityValidatorFactory(container);

        //Don't use built-in data-val-required
        provider.AddImplicitRequiredValidator = false;
    }
);