【问题标题】:Fluent Validations. Error: Validation type names in unobtrusive client validation rules must be unique流利的验证。错误:不显眼的客户端验证规则中的验证类型名称必须是唯一的
【发布时间】:2015-03-30 10:08:47
【问题描述】:

我得到了错误:

不显眼的验证类型名称 客户端验证规则必须是 独特的。以下验证类型 不止一次看到:必填。这 看到以下验证类型 不止一次:必填

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

这是我的验证类代码:

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

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

【问题讨论】:

    标签: jquery c#-4.0 asp.net-mvc-3 fluentvalidation


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 就像 Darin 所说,添加 NotNull 和 NotEmpty 多余的,不仅如此。它两次强制执行相同的验证,因此我在我的帖子中描述的错误......
    • 不知何故,这不适用于客户端验证,仅适用于服务器端..在客户端 asp.net mvc 会在所有字段上发出所需的属性,无论我将 AddImplicitRequiredAttributeForValueTypes 设置为 false :( 我要求 similira这在这篇帖子stackoverflow.com/questions/8011615/… 上并没有得到答案......我做错了什么还是验证规则和逻辑在服务器和客户端上不稳定??thanx
    【解决方案2】:

    FluentValidation.NET 被称为 Fluent,因为它为链接方法提供了 fluent interface

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多