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

Iva*_*tin 14 jquery fluentvalidation c#-4.0 asp.net-mvc-3

我得到了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();          
        }
}
Run Code Online (Sandbox Code Playgroud)

但如果我留下一个验证器 - 一切正常.我该怎么做才能为字段提供更多的验证.

Per*_*eck 27

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

未设置AddImplicitRequiredAttributeForValueTypes = false默认DataAnnontations FluentValidation将在任何ValueTypes(如an int)上添加Required验证.如果您同时[Required]在任何ValueType上添加RuleFor(或属性),则该字段将具有额外的Required.

出于这个原因(我想明确地设置所有验证)我在我的内容中有以下内容Application_Start():

var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new AttributedValidatorFactory());
ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
fluentValidationModelValidatorProvider.AddImplicitRequiredValidator = false;
Run Code Online (Sandbox Code Playgroud)

  • 就像达林所说的那样,添加NotNull和NotEmpty*是多余的,不仅如此.它强制执行相同的两次验证,因此我在帖子中描述的错误... (5认同)

Dar*_*rov 16

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

public TestViewDataValidation()
{
    RuleFor(x => x.Login)
        .NotNull()
        .NotEmpty()
        .EmailAddress();
}
Run Code Online (Sandbox Code Playgroud)

备注:在这种情况下,对我的使用NotNullNotEmpty规则似乎是疏忽的.NotEmpty应该够了.