2011-07-06 19 views
5

Tengo algunas secciones en una página ASP.NET y necesito validarlas por separado.ValidaciónSummary no funciona cuando se especifica ValidationGroup

Cada sección tiene su propia sección de resumen de validación, así que pensé en usar la etiqueta ValidationSummary con el atributo ValidationGroup pero no funciona.

El siguiente código funciona, pero valida todos los controles en la página:

<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server" 
Display="None" ErrorMessage="mandatory 1" /> 

<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server" 
Display="None" ErrorMessage="mandatory 2" /> 

.... 

<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" /> 

Mientras que el siguiente no funciona (sin validación alguna, al enviar, acabo de ir a la página siguiente en el asistente):

<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server" 
Display="None" ErrorMessage="mandatory 1" ValidationGroup="xxxx" /> 

<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server" 
Display="None" ErrorMessage="mandatory 2" ValidationGroup="xxxx" /> 

.... 

<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" ValidationGroup="xxxx" /> 

¿Qué me falta aquí? ¿Se necesita configuración adicional o algo más?

Respuesta

15

El comportamiento predeterminado de ASP.NET es que cuando el usuario hace clic en un botón que no tiene ValidationGroup especificado (y tiene CausesValidation conjunto de true), todos los controles de validación que no pertenecen a un grupo de validación se validan.

Por lo tanto, para validar un grupo específico, debe establecer la propiedad ValidationGroup del botón que debe causar la validación (y también posiblemente la propiedad CausesValidation).

Consulte el MSDN documentation for Button.ValidationGroup para obtener detalles y un ejemplo.

EDITAR: Si necesita validar TODOS los grupos en la página, la manera más fácil es, por supuesto, no usar grupos de validación. Si desea validar sin embargo sólo algunos (pero más de uno) grupos, puede hacerlo en el servidor (en el controlador de clic del botón), llamando al:

Validate("groupOne"); 
Validate("groupTwo"); 
// ... 

Tenga en cuenta que esto no va a desencadenar cliente lado de validación Consulte, por ejemplo, this post para obtener una explicación sobre cómo activar múltiples grupos de validación con un solo clic.

EDIT: encontré a blog post describiendo cómo crear un "botón de grupo de validación múltiple" reutilizable para ASP.NET, completo con código. No lo he intentado, pero parece prometedor.

+0

Oye ... funciona, no sabía que tenía que especificarlo también en el botón. ¡Gracias! Pero ahora tengo otro problema. Tengo más grupos de validación en mi página. ¿Cómo disparo TODOS ellos con solo un botón de envío? – user0971832

+0

si tiene que desencadenar toda la validación desde un botón, entonces por qué especifica un grupo de validación diferente para ellos. – rahularyansharma

+1

@rahularyansharma: Porque mi página está dividida en secciones. Cada sección tiene su propio ValidationSummary (es decir, el resumen de errores debe mostrarse en la misma sección que los campos que tienen errores), así que necesito agruparlos. Pero también necesito que todo se active con solo un botón de envío. – user0971832

Cuestiones relacionadas