Подтвердить что ты не робот

Условная валидация с использованием Fluent Validation

Мне нужен способ условной проверки полей в зависимости от того, заполняются ли другие поля.

Ex. У меня есть раскрывающийся список и поле даты, которые связаны. Если ни одно из полей не задано, форма должна пройти проверку. Однако, если одно из двух полей установлено, а другое - нет, тогда проверка должна срабатывать, требуя установки другого поля.

Я написал собственные классы проверки, но кажется, что он проверяется на отдельных полях. Есть ли способ настроить проверку, которая мне нужна, с использованием встроенных валидаторов? Если нет, есть ли хороший способ подключения двух полей с помощью настраиваемого валидатора?

4b9b3361

Ответ 1

Свободная проверка поддерживает условную проверку, просто используйте предложение When, чтобы проверить значение вторичного поля:

https://fluentvalidation.net/start#conditions

Задание условия с помощью When/Unless Методы When и Unless можно использовать для указания условий, определяющих, когда должно выполняться правило. Например, это правило для свойства CustomerDiscount будет выполняться, только если IsPreferredCustomer имеет значение true:

RuleFor (customer => customer.CustomerDiscount).GreaterThan(0).When(customer => customer.IsPreferredCustomer); '

Метод Unless является просто противоположностью Когда.

Вы также можете использовать операцию .SetValidator для определения пользовательского валидатора, который работает с условием NotEmpty.

RuleFor (customer => customer.CustomerDiscount).GreaterThan(0).SetValidator(New MyCustomerDiscountValidator)