Перевірка вільної роботи підтримує умовну перевірку, просто використовуйте речення When, щоб перевірити значення вторинного поля:
https://fluentvalidation.net/start#conditions
Вказівка умови за допомогою методів When / Unless Методи When and Unless можна використовувати для вказівки умов, які контролюють час виконання правила. Наприклад, це правило щодо властивості CustomerDiscount буде виконуватися лише тоді, коли IsPreferredCustomer відповідає істині:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
Метод "Хіба що" просто протилежний "Коли".
Ви також можете скористатися операцією .SetValidator, щоб визначити власний валідатор, який працює за умови NotEmpty.
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.SetValidator(New MyCustomerDiscountValidator);
Якщо вам потрібно вказати одну і ту ж умову для кількох правил, ви можете викликати метод верхнього рівня When, а не ланцюжок виклику When в кінці правила:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
});
Цього разу умова застосовуватиметься до обох правил. Ви також можете прив’язати виклик до Інакше, який буде викликати правила, які не відповідають умові:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
}).Otherwise(() => {
RuleFor(customer => customer.CustomerDiscount).Equal(0);
});