Отключите ненавязчивую проверку DataAnnotations по умолчанию при использовании Fluent Validation

Я использую Fluent Validation для серверной и ненавязчивой проверки на стороне клиента в MVC. Мне пришлось расширить его в соответствии с потребностями бизнеса, и я столкнулся с проблемами при проверке DataAnnotations по умолчанию. Поэтому я просто хочу полностью отключить встроенный поставщик DataAnnotations и использовать для этого мои собственные расширения Fluent Validation.

В принципе мне нужно остановить рендеринг встроенного ненавязчивого data-val- атрибуты для типов значений, таких как числа и даты (data-val-number, data-val-date, data-val-required).

Я пробовал:

ModelValidatorProviders.Providers.Clear();

И это, кажется, избавляет от атрибутов числа / даты, но обязательные атрибуты все еще там.

Я старался:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

Но это, похоже, ничего не делает. Может быть, я не в том месте / порядке?

1 ответ

Решение

С Fluent Validation у него есть собственный флаг для отключения обязательных атрибутов, который должен быть настроен с помощью FluentValidationModelValidatorProvider, Следующий код позаботится как об атрибутах типа по умолчанию, так и об обязательных атрибутах:

//Don't use built-in type attributes (data-val-number, data-val-date)
ModelValidatorProviders.Providers.Clear();

FluentValidationModelValidatorProvider.Configure(
    provider =>
    {
        provider.ValidatorFactory = new UnityValidatorFactory(container);

        //Don't use built-in data-val-required
        provider.AddImplicitRequiredValidator = false;
    }
);
Другие вопросы по тегам