2011-01-22 37 views
13

我得到了erorr:流利的驗證。錯誤:在不顯眼的客戶端驗證規則驗證類型名稱必須是唯一的

Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: required. The following validation type was seen more than once: required

我使用的服務器驗證。所有的工作都很好。 但現在我說明使用客戶端驗證,我得到了這個問題。

這是我的驗證類代碼:

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

但是,如果我離開一個驗證 - 一切工作正常。 我該怎麼做纔能有更多的驗證領域。

回答

16

FluentValidation.NET被稱爲流利因爲它提供了鏈接方法fluent interface

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

注:以上NotNullNotEmpty規則的使用似乎reduntant我在這種情況下。 NotEmpty應該足夠了。

26

如果您多次對同一元素進行相同的驗證,則會顯示此錯誤。

不設置AddImplicitRequiredAttributeForValueTypes = false兩個默認DataAnnontations 您FluentValidation可以在任何值類型(如一個int)添加必需的驗證。如果您同時在任何ValueType上添加RuleFor(或[Required]屬性),那麼您將對該字段有一個額外的必需項。

出於這個原因(我要明確設置的所有驗證)在我Application_Start()我有以下幾點:

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

像達林是在說,加入NOTNULL和NotEmpty * *是多餘的,不僅如此。它強制執行相同的驗證兩次,因此我在這裏描述的錯誤在我的文章... – 2011-06-27 13:20:34

相關問題