Fluent 유효성 검사는 조건부 유효성 검사를 지원합니다. When 절을 사용하여 보조 필드의 값을 확인하면됩니다.
https://fluentvalidation.net/start#conditions
When / Unless를 사용하여 조건 지정 When 및 Unless 메서드를 사용하여 규칙을 실행할시기를 제어하는 조건을 지정할 수 있습니다. 예를 들어 CustomerDiscount 속성에 대한이 규칙은 IsPreferredCustomer가 true 인 경우에만 실행됩니다.
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
Unless 방법은 단순히 When의 반대입니다.
.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();
});
이번에는 조건이 두 규칙 모두에 적용됩니다. 조건과 일치하지 않는 규칙을 호출하는 else 호출을 연결할 수도 있습니다.
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
}).Otherwise(() => {
RuleFor(customer => customer.CustomerDiscount).Equal(0);
});