2010-08-12 25 views
5

Tengo dos botones en un solo formulario. Uno se usa para enviar el formulario mientras que el otro se usa para buscar. No deseo que el botón de búsqueda active ninguna validación del lado del servidor o del lado del cliente.¿Cómo puedo hacer "causesvalidation = false" en ASP.NET MVC 2?

¿Cómo puedo hacer esto?

Gracias.

Editar

estoy usando datos de anotaciones en el servidor para validar, ejemplo:

[Required(ErrorMessage = "Institution is required")] 
    [Range(1, 2, ErrorMessage="Please select an institution")] 
    [DisplayName("Institution")] 
    public int InstitutionId { get; set; } 

Y en el cliente que estoy usando esto:

<% Html.EnableClientValidation(); %> 
+0

¿Dónde? ¿Necesita desactivar javascript y C#? ¿Qué estás usando para la validación ahora? FluentValidation, MVC2 Model Binder, Anotaciones de datos, IDataError? ¿Manual? – jfar

+0

Puesto original actualizado, gracias. – Mike

Respuesta

5

Para deshabilite la validación del lado del cliente para su botón de búsqueda, agregue un script como este a su página:

<script type="text/javascript"> 
    document.getElementById("searchButton").disableValidation = true; 
</script> 

La validación del lado del cliente no se ejecutará si el botón de activación tiene un campo llamado "disableValidation" que se evalúa como verdadero.

En el lado del servidor, su pregunta es un poco más difícil de responder porque todo depende de si y cómo está haciendo el enlace de modelo y qué hace su método de control cuando alguien hace clic en ese botón de búsqueda. Una opción podría ser simplemente para limpiar todos los errores de ModelState ... aquí es un método para hacer eso:

private static void ClearErrors(ModelStateDictionary modelState) 
{ 
    foreach (var key in modelState.Keys) 
    { 
     modelState[key].Errors.Clear(); 
    } 
} 

Si publica un código de ejemplo desde su controlador, puedo tratar de dar una mejor respuesta.