#892 - Evitare submit doppi della web form

Immaginiamo una semplice Web Form costituita da uno o più controlli di input ed un button per l'invio dei dati e salvataggio degli stessi in una base dati.
In particolari condizioni (connessione dell'utente particolarmente lenta, lunghi tempi di risposta da parte del server, ecc.) può succedere che l'utente, non percependo alcuna risposta da parte della web application, sia portato a fare nuovamente click sul bottone, scatenando un altro postback e, di conseguenza, creando inserimenti multipli nel database.

Per risolvere questo problema è necessario associare poche istruzioni JavaScript all'evento OnClientClick del button per disabilitare (lato client) il tasto all'invio del modulo (qualora l'eventuale validazione del form abbia avuto esito positivo).

Nel codice della classe corrispondente alla pagina che ospita un ipotetico button:

<asp:Button ID="Button1" runat="server" Text="Invia" />

dovremo aggiungere (ad esempio nell'evento OnLoad della pagina stessa) il seguente codice:

Button1.OnClientClick =
        "if(typeof(Page_ClientValidate)=='function' && !Page_ClientValidate()){return false;}" +
        "this.value='Attendere...';" +
        "this.disabled=true;" +
        ClientScript.GetPostBackEventReference(Button1, "") + ";";

dove il metodo "GetPostBackEventReference" della classe ClientScriptManager (referenziata dalla proprietà ClientScript della classe Page) restituisce la stringa usata nell'evento client per scatenare il postback al server.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

maxmun scrive:
#892 - Evitare submit doppi della web form

Il suggerimento è utile ma non assicura di evitare la doppia submit: ad esempio dopo la submit l'utente può premere il tasto F5 (o cliccare il ...
venerdì 1 giugno 2007 | 4 risposte
Daniele80 scrive:
#892 - Evitare submit doppi della web form

ciao a tutti, ho notato che se in un pagina ci sono due button oguno con il suo gruppod di validazione, questo controllo non funziona perchè fa ...
mercoledì 4 luglio 2007

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC