15

我得到了错误:

不显眼的客户端验证规则中的验证类型名称必须是唯一的。多次看到以下验证类型:必需。多次看到以下验证类型:必需

我使用了服务器验证。一切都很好。但现在我说要使用客户端验证,我遇到了这个问题。

这是我的验证类代码:

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();          
        }
}

但是,如果我留下一个验证器 - 一切正常。我应该怎么做才能对字段进行更多的验证。

4

2 回答 2

28

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

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

出于这个原因(我想明确设置所有验证)我在我的Application_Start()

var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new AttributedValidatorFactory());
ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
fluentValidationModelValidatorProvider.AddImplicitRequiredValidator = false;
于 2011-04-05T13:01:23.997 回答
17

FluentValidation.NET之所以称为Fluent ,是因为它为链接方法提供了一个fluent 接口:

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

备注:在这种情况下,NotNullNotEmpty规则的用法对我来说似乎是多余的。NotEmpty应该足够了。

于 2011-01-22T14:14:23.777 回答