2012-07-24 11 views
5

Sto lavorando a un progetto Web Form di ASP.NET 4.0, dopo un'interruzione di circa 5 anni, e sono confuso riguardo al comportamento di invio.I Web Form ASP.NET impediscono l'invio di un doppio clic?

Nell'evento click di un pulsante, ho dormito il thread in modo che sia possibile fare clic sul pulsante di invio più volte.

Da quello che posso dire, ASP.NET impedisce che l'evento click venga chiamato più volte. È vero?

BTW: ho disattivato javascript per questo test.

+0

possibile duplicato del [ASP.Net fare doppio clic problema] (http://stackoverflow.com/questions/1498269/asp-net- doppio clic sul problema) e [Impedisci di fare doppio clic sul pulsante] (http://stackoverflow.com/questions/6408710/prevent-double-clicking-on-button) e http://stackoverflow.com/questions/11342546/how-to-prevent-double-submit-with-jquery-in-asp-net-app-with-updatepanels? rq = 1 – adatapost

+0

Il pro blem di quelle risposte è che parlano dell'implementazione di un token per determinare se sia stata effettuata una doppia submission. Questo è quello che stavo per fare fino a quando sembrava che ASP.NET lo stesse comunque impedendo. C'è solo 1 risposta, http://stackoverflow.com/a/1502846/120399, che indica che ASP.NET può prendersi cura di esso per te. – Jules

risposta

8

"ASP.NET impedisce l'evento click viene chiamato più di una volta. È vero?"

No, in realtà ciò che sta accadendo a voi è che gli eventi sono bloccati da la serratura della sessione. (What session is on asp.net, è un modulo su asp.net che può conservare i dati per ogni utente che visita il sito)

Così quando si effettua un invio, e la pagina è in esecuzione questo invio, e quindi si effettua un secondo prima del prima una replica, in realtà la seconda è in attesa che la prima termini e sblocchi la sessione.

Per eseguire un test e provare che la sessione sta bloccando la richiesta, disattivare la sessione e riprovare.

relativa:
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely
Trying to make Web Method Asynchronous

+1

Ho eseguito il test e i risultati sono come dici tu - quando la sessione è disabilitata, ottengo più hit per l'evento. Quando la sessione è abilitata, sembra che le richieste successive vengano espulse e non accodate, se l'evento è bloccato. Da questo, presumo che se Sessione è abilitata per una pagina, non devo preoccuparmi dei doppi invii, a patto che io, per esempio, disabiliti il ​​pulsante prima di rispondere. È corretto? – Jules

+0

@Jules Bene, sono lieto di aver compreso il vero problema :) – Aristos

+0

@Jules Sì, la sessione è di aiuto per molti problemi di sincronizzazione come quella. Ho creato una sessione personalizzata che non blocca nulla e mi blocco dal mio problema di sinistra come questo. Questa è la parte buona, la parte cattiva è quella di bloccare tutte le richieste e questa richiesta di fare che non hanno la relatività per bloccare l'una l'altra ... almeno rendere la vita più facile nei primi mesi quando si avvia un sito. – Aristos