Условная валидация с использованием беглой валидации - PullRequest
59 голосов
/ 10 ноября 2011

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

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

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

1 Ответ

90 голосов
/ 11 ноября 2011

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

https://fluentvalidation.net/start#conditions

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

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

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

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

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

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