2010-02-05 17 views
5

Tengo un problema donde tengo un formulario simple de agregar/editar y uso de la validación del lado del cliente (jQuery/MicrosoftMvcJQueryValidation.js) que se genera a partir de anotaciones de datos y habilitado lado del cliente mediante una llamada al siguiente en mi opinión:Atributo necesario para el tipo de valor bool cuando se utiliza como casilla de verificación

<% Html.EnableClientValidation(); %> 

Esto parece funcionar bien para la mayoría de los elementos, sin embargo tengo una instancia donde tengo una propiedad booleana que se representa como una casilla de verificación usando:

<%= Html.EditorFor(model => model.Chargeable)%> 

que puede ser verdadero/falso (marcado/no marcado).

Como bool es un tipo de valor, y no admite nulos, se representa como una propiedad requerida y muestra un error (lado del cliente) cuando se envía el formulario que dice "El campo obligatorio es obligatorio", sin embargo, como el HTML que se genera es de dos partes (casilla de verificación y valor oculto) pasará la validación posterior de la publicación.

Después de navegar por el código fuente MVC 2, me las he arreglado para poner una "rápida y sucia" arreglar en el momento, que consiste en establecer:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 

Cualquier otra persona tiene alguna idea o sugerencia sobre cómo puedo evitar esto?

IMO, no creo que MVC deba establecer el validador requerido del lado del cliente para las casillas de verificación procesadas utilizando los métodos Html.EditorFor/Html.CheckBox (For).

Nota: Estoy utilizando ASP.NET MVC 2 RC2 y MicrosoftMvcJQueryValidation.js de la versión correspondiente de MVC Futures.

Respuesta

5

supongo que la forma más fácil de manejar que es llamar a las reglas ("eliminar", [normas]) la función de los elementos (principalmente casillas de verificación) que desea eliminar la validación en el cliente de:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#Chargeable').rules('remove', 'required'); 
    }); 
</script> 
Cuestiones relacionadas