2011-10-14 7 views
5

Tengo una página asp.net con múltiples resúmenes de validación configurados con ShowMessageBox="True" y varios validadores. Me encontré con una situación en la que cuando falla la validación, el resumen de validación se muestra correctamente, pero luego el siguiente clic que normalmente activaría una devolución de datos de la página no activa una devolución de datos. Por lo tanto, los pasos se ven así:¿Por qué mi formulario no se publicará después de la validación?

  1. Haga clic en el botón que activa la validación.
  2. La validación falla y se muestra un cuadro de mensaje con el mensaje de error.
  3. Haga clic en un botón diferente que no valida pero que debe desencadenar una devolución de datos no ocurre nada
  4. Haga clic en el mismo botón que en el paso 3 de nuevo la devolución se realiza como se esperaba.

¿Qué podría causar este comportamiento?

EDITAR: La validación se realizó de la siguiente manera. En la página ASP:

<asp:Button runat="server" id="btn" onClientClick="return DoValidation();" /> 

en el javascript:

function DoValidation() { 
    if (!Page_ClientValidate('group1')) 
     return false; 
    if (!Page_ClientValidate('group2')) 
     return false; 

    return true; 
} 
+0

es probable que necesite publicar algún código para obtener una buena respuesta. –

+0

intente configurar la propiedad de invalidación de causas en falso para el segundo botón? – IrishChieftain

+0

Intenté configurarlo en falso y obtuve el mismo resultado. La página es bastante compleja. Esperaba que alguien pudiera haber visto una situación similar. – Mykroft

Respuesta

13

Después de trabajar en esto y hacer un uso cuidadoso del depurador, finalmente descubrí que cuando se hace la validación de la forma descrita en la edición de la pregunta de que un booleano está configurado en la falla que impide el siguiente paso de la página. Creo que esto se hace cuando la validación se realiza de forma automática en lugar de explícitamente como lo hago aquí. Cambio del javascript descrito anteriormente para que se vea así:

function DoValidation() { 
    if (!Page_ClientValidate('group1')) { 
     Page_BlockSubmit = false; 
     return false; 
    } 
    if (!Page_ClientValidate('group2')) { 
     Page_BlockSubmit = false; 
     return false; 
    } 

    return true; 
} 

Hace que el problema desaparezca. Espero que esto ayude a la siguiente persona que comete el mismo error que yo.

+0

Tiempo de depuración guardado para mí. ¡Gracias! –

+0

¡Desearía haber visto tu respuesta hace una hora! – clamchoda

Cuestiones relacionadas