Die fließende Validierung unterstützt die bedingte Validierung. Verwenden Sie einfach die When-Klausel, um den Wert des sekundären Felds zu überprüfen:
https://fluentvalidation.net/start#conditions
Angeben einer Bedingung mit Wann / Es sei denn, Mit den Methoden Wann und Es können Bedingungen angegeben werden, die steuern, wann die Regel ausgeführt werden soll. Diese Regel für die CustomerDiscount-Eigenschaft wird beispielsweise nur ausgeführt, wenn IsPreferredCustomer true ist:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
Die Es sei denn, die Methode ist einfach das Gegenteil von Wann.
Möglicherweise können Sie auch die Operation .SetValidator verwenden, um einen benutzerdefinierten Validator zu definieren, der unter der NotEmpty-Bedingung ausgeführt wird.
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.SetValidator(New MyCustomerDiscountValidator);
Wenn Sie dieselbe Bedingung für mehrere Regeln angeben müssen, können Sie die When-Methode der obersten Ebene aufrufen, anstatt den When-Aufruf am Ende der Regel zu verketten:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
});
Dieses Mal wird die Bedingung auf beide Regeln angewendet. Sie können auch einen Aufruf an Andernfalls verketten, wodurch Regeln aufgerufen werden, die nicht der Bedingung entsprechen:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
}).Otherwise(() => {
RuleFor(customer => customer.CustomerDiscount).Equal(0);
});