Xác thực thông thạo hỗ trợ xác thực có điều kiện, chỉ cần sử dụng mệnh đề Khi để kiểm tra giá trị của trường phụ:
https://fluentvalidation.net/start#conditions
Chỉ định một điều kiện với Khi / Trừ khi Các phương thức Khi và Trừ khi có thể được sử dụng để chỉ định các điều kiện kiểm soát thời điểm quy tắc sẽ thực thi. Ví dụ: quy tắc này trên thuộc tính CustomerDiscount sẽ chỉ thực thi khi IsPreferredCustomer là true:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
Phương thức Unless đơn giản là ngược lại với When.
Bạn cũng có thể sử dụng thao tác .SetValidator để xác định trình xác thực tùy chỉnh hoạt động trên điều kiện NotEmpty.
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.SetValidator(New MyCustomerDiscountValidator);
Nếu bạn cần chỉ định cùng một điều kiện cho nhiều quy tắc thì bạn có thể gọi phương thức Khi cấp cao nhất thay vì nối chuỗi lệnh gọi Khi ở cuối quy tắc:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
});
Lần này, điều kiện sẽ được áp dụng cho cả hai quy tắc. Bạn cũng có thể chuỗi một lệnh gọi tới Nếu không sẽ gọi các quy tắc không phù hợp với điều kiện:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
}).Otherwise(() => {
RuleFor(customer => customer.CustomerDiscount).Equal(0);
});