Fluent Validations. Error: Validation type names in unobtrusive client validation rules must be unique

坚强是说给别人听的谎言 提交于 2019-12-17 18:33:22

问题


I got the 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

I used server validation. And all worked fine. But now I`m stating to use client-side validation and I got this problem.

This is my validation class code:

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

But if I leave one validator - all works fine. What should I do to have more that one validation for field.


回答1:


FluentValidation.NET is called Fluent because it provides a fluent interface for chaining methods:

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

Remark: the usage of NotNull and NotEmpty rules seem reduntant to me in this case. NotEmpty should be enough.




回答2:


This error is shown if you have the same validation on the same element more than once.

Not setting AddImplicitRequiredAttributeForValueTypes = false for both the default DataAnnontations and your FluentValidation will add a Required validation on any ValueTypes (like an int). If you at the same time add a RuleFor (or a [Required] attribute) on any ValueType you will have an extra Required for that field.

For that reason (I want to set all validations explicitly) I have the following in my Application_Start():

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


来源:https://stackoverflow.com/questions/4767457/fluent-validations-error-validation-type-names-in-unobtrusive-client-validatio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!