Akıcı doğrulama koşullu doğrulamayı destekler; ikincil alanın değerini kontrol etmek için yalnızca When yan tümcesini kullanın:
https://fluentvalidation.net/start#conditions
Ne Zaman / Olmazsa ile bir koşul belirtme Ne Zaman ve Olmadıysa yöntemleri, kuralın ne zaman yürütülmesi gerektiğini kontrol eden koşulları belirtmek için kullanılabilir. Örneğin, CustomerDiscount özelliğindeki bu kural yalnızca IsPreferredCustomer true olduğunda çalıştırılır:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
Unless yöntemi, When kelimesinin tam tersidir.
NotEmpty koşulunda çalışan özel bir doğrulayıcı tanımlamak için .SetValidator işlemini de kullanabilirsiniz.
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.SetValidator(New MyCustomerDiscountValidator);
Birden çok kural için aynı koşulu belirtmeniz gerekiyorsa, kuralın sonunda When çağrısını zincirlemek yerine en üst düzey When yöntemini çağırabilirsiniz:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
});
Bu sefer koşul her iki kurala da uygulanacaktır. Ayrıca, Aksi takdirde koşulla eşleşmeyen kuralları çağıran bir çağrıyı zincirleyebilirsiniz:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
}).Otherwise(() => {
RuleFor(customer => customer.CustomerDiscount).Equal(0);
});