Validasi lancar mendukung validasi bersyarat, cukup gunakan klausa When untuk memeriksa nilai bidang sekunder:
https://fluentvalidation.net/start#conditions
Menentukan kondisi dengan When / Kecuali Metode When dan Unless dapat digunakan untuk menentukan kondisi yang mengontrol kapan aturan harus dijalankan. Misalnya, aturan ini pada properti CustomerDiscount hanya akan dijalankan jika IsPreferredCustomer benar:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
Metode Kecuali adalah kebalikan dari When.
Anda mungkin juga dapat menggunakan operasi .SetValidator untuk menentukan validator kustom yang beroperasi pada kondisi NotEmpty.
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.SetValidator(New MyCustomerDiscountValidator);
Jika Anda perlu menetapkan kondisi yang sama untuk beberapa aturan, maka Anda dapat memanggil metode When tingkat atas alih-alih merangkai panggilan When di akhir aturan:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
});
Kali ini, ketentuan tersebut akan diterapkan pada kedua aturan tersebut. Anda juga dapat menyambung panggilan ke Sebaliknya yang akan memanggil aturan yang tidak cocok dengan kondisi:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
}).Otherwise(() => {
RuleFor(customer => customer.CustomerDiscount).Equal(0);
});