问题
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