2011-11-10 20 views
38

cosa ho bisogno è un modo per convalidare condizionale campi a seconda se altri campi vengono compilati.condizionale Validazione utilizzando Fluent convalida

Ex. Ho un menu a discesa e un campo della data correlati. Se nessuno dei campi è impostato, il modulo deve passare la convalida. Tuttavia, se uno dei due campi è impostato ma l'altro non lo è, la convalida dovrebbe attivarsi, richiedendo l'impostazione dell'altro campo.

Ho scritto classi di convalida personalizzate ma sembra che sia valido su singoli campi. C'è un modo per impostare la convalida che ho bisogno di usare i validatori integrati? In caso contrario, c'è un buon modo per connettere due campi usando un validatore personalizzato?

risposta

61

convalida perfetto supporta la convalida condizionale, basta usare la clausola WHEN per verificare il valore del campo secondario:

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

Specifica di una condizione con Quando/A meno che L'Quando e meno metodi possono essere utilizzato per specificare le condizioni che controllano quando deve essere eseguita la regola . Ad esempio, questa regola sulla proprietà CustomerDiscount verrà eseguito solo quando IsPreferredCustomer è vero:

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

Il metodo Unless è semplicemente l'opposto di When.

Potrebbe anche essere possibile utilizzare l'operazione .SetValidator per definire un validatore personalizzato che funzioni sulla condizione NotEmpty.

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

+1

Grazie per avermi mostrato il "Quando" condizione. – Seva

Problemi correlati