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


我得到了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();          
        }
}

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


14
2018-01-22 11:08


起源




答案:


FluentValidation.NET 叫做 流利 因为它提供了一个 流畅的界面 用于链接方法:

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

备注:用法 NotNull 和 NotEmpty 在这种情况下,规则似乎对我不利。 NotEmpty 应该够了。


16
2018-01-22 14:14





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

没有设定 AddImplicitRequiredAttributeForValueTypes = false 对于两个默认的DataAnnontations  您的FluentValidation将在任何ValueTypes上添加必需的验证(如 int)。如果你同时添加一个RuleFor(或一个 [Required] 对于任何ValueType,您将为该字段添加额外的必需属性。

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

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

27
2018-04-05 13:01



就像Darin说的那样,添加NotNull和NotEmpty 是 多余的,而不仅仅是那个。它强制执行相同的两次验证,因此我在帖子中描述的错误... - Per Hornshøj-Schierbeck
不知何故,这不适用于客户端验证仅用于服务器端..在客户端asp.net mvc发出所有字段所需的属性,无论我将AddImplicitRequiredAttributeForValueTypes设置为false :(我在此帖子上问similira stackoverflow.com/questions/8011615/...   并没有得到答案...我做错了什么或验证规则和逻辑在服务器和客户端上是不稳定的?感谢名单 - Marko