2011-11-10 64 views
38

我需要的是一種方法,取決於是否有其他字段填寫有條件驗證領域。條件驗證使用流利的驗證

例。我有一個相關的下拉菜單和日期字段。如果沒有設置任何字段,則表單應該通過驗證。但是,如果兩個字段中的一個被設置,但另一個不是,那麼驗證應該觸發,需要設置另一個字段。

我寫了自定義驗證類,但它似乎是驗證單個字段。有沒有一種方法來設置我需要使用內置的驗證器進行驗證?如果沒有,是否有一種使用自定義驗證程序連接兩個字段的好方法?

回答

61

流利驗證支持條件的驗證,只是使用當子句來檢查次級字段的值:指定與病症

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

當/除非的當和除非方法可以用於指定控制何時執行規則 的條件。例如,當IsPreferredCustomer是真對CustomerDiscount 屬性此規則將只執行:

RuleFor(客戶=> customer.CustomerDiscount).GreaterThan(0)。當(客戶=> customer.IsPreferredCustomer);`

除非方法是簡單地與When相反。

您也可以使用.SetValidator操作來定義在NotEmpty條件下運行的自定義驗證程序。

RuleFor(客戶=> customer.CustomerDiscount).GreaterThan(0).SetValidator(新MyCustomerDiscountValidator)

+1

感謝您對我的 「當」 條件。 – Seva