使用Fluentvalidation进行条件validation

我需要的是一种有条件地validation字段取决于是否填写其他字段的方法。

防爆。 我有一个下拉和一个相关的date字段。 如果没有设置字段,则表单应该通过validation。 但是,如果两个字段中的一个被设置,而另一个不是,那么validation应该被触发,要求设置另一个字段。

我写了自定义validation类,但它似乎是validation单个字段。 有没有一种方法来设置validation,我需要使用内置的validation器? 如果没有,是否有一个很好的方法来使用自定义validation器连接两个字段?

Fluentvalidation支持条件validation,只需使用When子句来检查辅助字段的值:

http://fluentvalidation.codeplex.com/wikipage?title=Customising&referringTitle=Documentation&ANCHOR#WhenUnless

使用When / Without指定条件可以使用When和除去方法来指定控制何时执行规则的条件。 例如,只有在IsPreferredCustomer为true时,才会执行CustomerDiscount属性上的此规则:

RuleFor(customer => customer.CustomerDiscount).GreaterThan(0).When(customer => customer.IsPreferredCustomer);`

除非方法是简单地与时相反。

您也可以使用.SetValidator操作来定义在NotEmpty条件下运行的自定义validation器。

RuleFor(customer => customer.CustomerDiscount).GreaterThan(0).SetValidator(New MyCustomerDiscountValidator)