JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

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

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!

José Manuel Alarcón José Manuel Alarcón
Fundador de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Descarga GRATIS mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Comentarios (3) -

Gracias, excelente aporte, justo lo que ocupaba saber, y la nota al final, sobre poner la propiedad ValidationGroup del botón super importante saberlo.

Responder

Gracias por el aporte, a mi lo que me ha funcionado es utilizar links <a> en vez de botones <input> tipo submit, asi puedo realizar la accion y solo recogo los valores que necesito.
No es la mejor manera pero funciona.

Responder

Enrique Guzman

Muy buena brother, estaba peleando porque tengo 4 formularios diferentes y ninguno me funcionaba, ahora se para que es eso de ValidatorGroup, muchas gracias por la info!

Responder

Agregar comentario