2011-10-14 3 views
5

Ho una pagina asp.net con più riepiloghi di convalida impostati con ShowMessageBox="True" e diversi validatori. Ho incontrato una situazione in cui, quando la convalida fallisce, il riepilogo di convalida viene visualizzato correttamente, ma il clic successivo che normalmente innesca un postback della pagina non attiva un postback. Quindi i passaggi sono:Perché il mio modulo non postback dopo la convalida?

  1. Fare clic sul pulsante che attiva la convalida.
  2. La convalida non riesce e viene visualizzata una finestra di messaggio con il messaggio di errore.
  3. Fare clic su un pulsante diverso che non convalida ma deve attivare un postback non succede nulla
  4. Fare clic sullo stesso pulsante del passaggio 3 di nuovo il postback avviene come previsto.

Cosa potrebbe causare questo comportamento?

MODIFICA: la convalida veniva eseguita nel modo seguente. Nella pagina asp:

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

Nella javascript:

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

    return true; 
} 
+0

probabilmente avrai bisogno di inserire del codice per ottenere una buona risposta. –

+0

prova a impostare la proprietà causevalidation su false per il secondo pulsante? – IrishChieftain

+0

Ho provato a impostarlo su false e ho ottenuto lo stesso risultato. La pagina è abbastanza complessa speravo che qualcuno potesse aver visto una situazione simile. – Mykroft

risposta

13

Dopo aver lavorato su questo e facendo un uso attento del debugger ho finalmente scoperto che quando si fa la convalida il modo descritto nella modifica alla la domanda a cui è stato impostato un booleano in caso di errore che blocca il successivo PostBack della pagina. Credo che ciò venga fatto quando la convalida viene eseguita automaticamente anziché esplicitamente come sto facendo qui. Cambiare il JavaScript descritto sopra a guardare come questo:

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

    return true; 
} 

causa il problema di andare via. Spero che questo aiuti la prossima persona che fa lo stesso errore che ho fatto.

+0

Tempo di debugger salvato per me. Grazie! –

+0

Vorrei aver visto la tua risposta un'ora fa! – clamchoda