我得到了erorr:
验证类型名称不引人注目 客户端验证规则必须是 独特。以下验证类型 不止一次被看见:必需。该 看到了以下验证类型 不止一次:必需
我使用过服务器验证。一切正常。 但现在我说要使用客户端验证,我遇到了这个问题。
这是我的验证类代码:
public class TestViewDataValidation : BaseTestCreateViewDataValidation<BaseTestCreateViewData>
{
public TestViewDataValidation ()
{
this.RuleFor(x => x.Login).NotNull();
this.RuleFor(x => x.Login).NotEmpty();
this.RuleFor(x => x.Login).EmailAddress();
}
}
但如果我留下一个验证器 - 一切正常。 我该怎么做才能为字段提供更多的验证。
答案 0 :(得分:26)
如果您对同一元素进行多次相同的验证,则会显示此错误。
未为默认DataAnnontations 和设置AddImplicitRequiredAttributeForValueTypes = false
您的FluentValidation将在任何ValueTypes(如int
)上添加必需的验证。如果您同时在任何ValueType上添加RuleFor(或[Required]
属性),则该字段将具有额外的必需属性。
出于这个原因(我想明确设置所有验证)我在Application_Start()
中有以下内容:
var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new AttributedValidatorFactory());
ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
fluentValidationModelValidatorProvider.AddImplicitRequiredValidator = false;
答案 1 :(得分:16)
FluentValidation.NET
被称为 Fluent ,因为它为链接方法提供了fluent interface:
public TestViewDataValidation()
{
RuleFor(x => x.Login)
.NotNull()
.NotEmpty()
.EmailAddress();
}
备注:在这种情况下,NotNull
和NotEmpty
规则的使用似乎对我不利。 NotEmpty
就足够了。