Efectuar la validación de varios formularios por separado en ASP.NET Web Forms

Post original en JASoft.org: http://www.jasoft.org/Blog/post/Efectuar-la-validacion-de-varios-formularios-por-separado-en-ASPNET-Web-Forms.aspx

input_validationHoy un truco rápido de principiante…

Los grupos de validación surgen para suplir una limitación de los formularios HTML dentro de los formularios Web de ASP.NET. Y es que, por el propio modo de funcionar de los Web Forms, cada página ASPX sólo puede tener un único formulario (en el sentido de que no pueden disponer de más de una etiqueta <form> de HTML). Por ello, si realmente quieres tener en tu página un par de formularios colocados (por ejemplo, uno para darse de alta y otro para hacer login en tu sitio web), realmente sólo existe un único <form> por debajo. Lo normal es agrupar los controles dentro de un panel  para que visualmente se vean separados, y para que se comporten como si realmente fueran dos formularios independientes, las validaciones se hacen de forma separada también.

Para conseguirlo se utiliza la propiedad ValidationGroup de los controles así como el control ValidationSummary. Ésta nos permite asociar la validación de un determinado control a un mismo grupo de controles que se validan juntos. Para ello hay que poner el mismo valor en la propiedad ValidationGroup de todos los controles que se deban validar de manera conjunta y hacer lo propio con el control ValidationSummary que recogerá el resultado de la validación conjunta.

Es decir, los pasos a seguir son:

  1. Añades a tu Web Form los controles que forman parte del formulario (etiquetas, cajas de texto, listas desplegables, etc…) así como el botón de enviar el formulario (en el evento OnClick del servidor para éste recoges los datos).
  2. Arrastras uno o más validadores al formulario para comprobar, tanto en cliente como en servidor, que se cubren los campos obligatorios, que son del tipo apropiado, etc… Es decir, haces las validaciones de la forma habitual.
  3. Incorporas un control ValidationSummary para recoger en un solo lugar los mensajes de todos los controles de validación que vayan saltando. Así lo puedes colocar, por ejemplo, a la derecha del formulario, y el usuario ve de un golpe de vista todos los problemas que hay.
  4. Estableces la propiedad ValidationGroup de todos los controles de validación y del ValidationSummary a un valor común, por ejemplo, «FormularioLogin». De esta forma todos los mensajes de estos validadores se mostrarán juntos en el resumen.

Parece realmente fácil, y lo es, pero hay un detalle que debemos tener en cuenta y que generalmente es el obstáculo con el que tropiezan todos los principiantes: se debe establecer la propiedad ValidationGroup no sólo en los controles de tipo Validator y en los controles a validar, sino también en los controles que puedan provocar una validación del formulario en cuestión.

Esto implica que el botón que envía el formulario debe tener en su propiedad ValidationGroup la misma cadena que los controles que debamos validar juntos como consecuencia del envío del formulario.

Si no le estableces esta propiedad al botón y a todos los controles que puedan provocar el envío del formulario al servidor, la validación no se produce y no funcionará el ValidationSummary ni,en realidad, la validación de ninguno de los controles del grupo.

¡Espero que te sea útil!

Sin categoría

5 thoughts on “Efectuar la validación de varios formularios por separado en ASP.NET Web Forms

  1. Patricio:

    Quizá llegue 7 años tarde para ti que eres muy listo y muy experimentado (en este caso a mi me llegaría unos 11 años tarde que son los que llevo con ASP.NET), pero te aseguro que a muchos principiantes no les llega tarde y les resultará útil. Por ejemplo… al que me lo preguntó hace unos días y por eso ahora lo he escrito aquí.

    Saludos,

  2. Por cierto, quizá no se haya entendido bien, pero lo interesante de aquí y el verdadero motivo del post es lo que aparece en negrita al final del mismo…

  3. Siempre interesante Jose !!!

    nadie nace sabiendo, hay que dar valor al que expone información útil en un blog, y no al que no expone nada y se queja de los que si lo hacen

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *