流畅的validation。 错误:不显眼的客户端validation规则中的validation类型名称必须是唯一的

我得到了erorr:

不引人注目的客户端validation规则中的validation类型名称必须是唯一的。 以下validation类型不止一次出现:必需。 以下validation类型不止一次出现:必需

我用过服务器validation。 一切正常。 但现在我说要使用客户端validation,我遇到了这个问题。

这是我的validation类代码:

public class TestViewDataValidation : BaseTestCreateViewDataValidation { public TestViewDataValidation () { this.RuleFor(x => x.Login).NotNull(); this.RuleFor(x => x.Login).NotEmpty(); this.RuleFor(x => x.Login).EmailAddress(); } } 

但如果我留下一个validation器 – 一切正常。 我该怎么办才能为字段提供更多的validation。

FluentValidation.NET被称为Fluent,因为它为链接方法提供了一个流畅的接口 :

 public TestViewDataValidation() { RuleFor(x => x.Login) .NotNull() .NotEmpty() .EmailAddress(); } 

备注:在这种情况下, NotNullNotEmpty规则的使用似乎对我不利。 NotEmpty应该足够了。

如果您对同一元素进行多次相同的validation,则会显示此错误。

不为默认DataAnnontations设置AddImplicitRequiredAttributeForValueTypes = false并且您的FluentValidation将在任何ValueTypes(如int )上添加Requiredvalidation。 如果您同时在任何ValueType上添加RuleFor(或[Required]属性),则该字段将具有额外的Required。

出于这个原因(我想明确设置所有validation)我在Application_Start()有以下内容:

 var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new AttributedValidatorFactory()); ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider); DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; fluentValidationModelValidatorProvider.AddImplicitRequiredValidator = false;