2011-11-10 18 views
38

Lo que necesito es una manera de validar campos condicionalmente dependiendo de si otros campos se rellenan.condicional de validación usando Fluido Validación

Ex. Tengo un menú desplegable y un campo de fecha que están relacionados. Si ninguno de los campos está establecido, el formulario debe pasar la validación. Sin embargo, si uno de los dos campos está configurado pero el otro no, entonces la validación debe dispararse, lo que requiere que se establezca el otro campo.

He escrito clases de validación personalizadas, pero parece que se valida en campos individuales. ¿Hay alguna manera de configurar la validación que necesito usando los validadores incorporados? Si no, ¿hay una buena manera de conectar dos campos usando un validador personalizado?

Respuesta

61

validación Fluido soporta la validación condicional, sólo tiene que utilizar el Cuando cláusula para comprobar el valor del campo secundario:

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

Especificación de una condición con Cuando/A menos La Cuándo y menos que métodos pueden se usará para especificar las condiciones que controlan cuándo debe ejecutarse la regla . Por ejemplo, esta regla en la propiedad CustomerDiscount sólo se ejecuta cuando IsPreferredCustomer es cierto:

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

El método A menos es simplemente el opuesto de Cuándo.

También es posible que pueda usar la operación .SetValidator para definir un validador personalizado que opere en la condición NotEmpty.

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

+1

Gracias por mostrarme el "cuando" condición. – Seva

Cuestiones relacionadas