我在MVC中使用Fluent Validation进行服务器端和不显眼的客户端验证。我不得不扩展它以满足业务需求,并且遇到了默认DataAnnotations验证的问题。所以我只想完全禁用内置的DataAnnotations提供程序,并使用我自己的Fluent Validation扩展来进行此验证。
基本上,我需要停止呈现值类型的内置不显眼data-val-
属性,例如数字和日期(data-val-number,data-val-date,data-val-required )。
我试过了:
ModelValidatorProviders.Providers.Clear();
这似乎摆脱了数字/日期属性,但所需的属性仍然存在。
我试过了:
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
但这似乎没有做任何事情。也许我的位置/顺序错误了?
答案 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;
}
);