Die multiple-Formular sendet in ASP.NET
Ich bin derzeit auf der Suche nach einem Weg, um zu verhindern, dass mehrere form übermittelt in ASP.NET (D. H. der Benutzer klickt auf einen submitButton festgelegt mehrmals, wodurch das OnClick-Ereignis ausgelöst, mehrere Male auch).
Derzeit mache ich es so:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Page.ClientScript.RegisterOnSubmitStatement(GetType(), "ServerForm",
"if (this.submitted) return false; this.submitted = true; return true;");
}
Diese funktioniert wie ein Charme für synchrone postbacks - die 'eingereicht'-Wert wird zurückgesetzt nach jedem postback und verhindern, dass das Formular abgesendet wurde, mehrfach in der gleichen Ausführung - aber diese Methode funktioniert nicht für AsyncPostbacks d.h. mit einem UpdatePanel, so jetzt bin ich auf der Suche nach einer Idee, um dies zu verwirklichen, ohne dass zu de - und aktivieren jede und jeder button via JS nach dem Klick auf eine Schaltfläche.
Dank,
Dennis
- Warum nicht deaktivieren, der button?
- Weil es eine Menge von JS, ich möchte wirklich nicht in meinen Seiten, zusätzlich hat Sie arbeiten für verschiedene Browser (hi IE), die wirklich ein Schmerz sein kann, zu implementieren, ich hatte gehofft, dass eine einfache Lösung wie diese, kann ich einfach umsetzen, in eine Klasse, die von Page.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Seite.get_isInAsyncPostBack() in javascript zu prüfen, den Zustand der asynchronen Anfrage.
Siehe diesen link für weitere Informationen:
http://ranaictiu-technicalblog.blogspot.com/2009/03/prevent-concurrent-asynchronous.html
warum nicht Sie überprüfen in Ihrer Datenbank ? wenn der Benutzer bereits registriert, dann geben Sie eine alert-box.
und Sie können auch überprüfen, PRG-Muster
Handhabung des Formulars mit PRG
Hofft, dass dies helfen wird, Sie.
http://www.techimo.com/forum/webmastering-programming/210441-prevent-multiple-postbacks-javascript-net.html
Sys.WebForms.PageRequestManager
zu überprüfen, für ASync-requests.Sys.WebForms.PageRequestManager Können Sie ändern Sie den code im obigen Beispiel & deaktivieren Sie die Schaltfläche mit einfachen javascript, wie
document.getElementById("YouButton.ClientID").disabled = true;