Свободные проверки.Ошибка: имена типов проверки в ненавязчивых правилах проверки клиентов должны быть уникальными - PullRequest
14 голосов
/ 22 января 2011

Я получил 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();          
        }
}

Но если я оставлю один валидатор - все работает нормально,Что я должен сделать, чтобы иметь более одной проверки для поля.

Ответы [ 2 ]

26 голосов
/ 05 апреля 2011

Эта ошибка отображается, если у вас есть одна и та же проверка на одном и том же элементе более одного раза.

Не задано AddImplicitRequiredAttributeForValueTypes = false для обеих по умолчанию DataAnnontations и , ваша FluentValidation добавит Requiredпроверка на любые значения типа (например, int).Если вы одновременно добавите RuleFor (или атрибут [Required]) к любому типу ValueType, у вас будет дополнительный Обязательный для этого поля.

По этой причине (я хочу явно указать все проверки)в моем Application_Start():

var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new AttributedValidatorFactory());
ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
fluentValidationModelValidatorProvider.AddImplicitRequiredValidator = false;
16 голосов
/ 22 января 2011

FluentValidation.NET называется Свободный , поскольку он обеспечивает свободный интерфейс для методов объединения:

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

Примечание: использование NotNull и NotEmpty правила кажутся мне избыточными в этом случае.NotEmpty должно быть достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...