2016-10-04 10 views
-2

In meinem Projekt gibt es eine Asp-Schaltfläche mit einem C# button_Onclick-Handler. Das Problem ist, wenn Sie den Knopf auf HTML klicken, wird das Ereignis vom Browser behalten. Zum Beispiel wird das Ereignis gesendet, wenn Sie den Browser aktualisieren ..Wie lösche ich ein Button Click Event?

Ich habe versucht, eine return; an das Ende der button_Onclick-Handler und ein JavaScript für thebutton_Onclick-Handler zu rufen, aber alle fehlschlagen.

asp:

<asp:Button ID="btnSubmit" runat="server" Text="Save" /> 

C#:

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    ....... 
    return; 
} 
+0

Ich sollte es mit Javascript –

+0

Ich sehe nicht btnSubmit_click auf aspx-Code registriert. Es wird nie aufgerufen werden. Und was meinst du mit der Veranstaltung wird von Browser gehalten? –

+0

@PratikGaikwad 1) es registriert in page_load 2) wenn Sie den Browser aktualisieren, wird das Ereignis erneut gesendet –

Antwort

0

Code Angenommen, eine Anforderung POST, wenn auf die Schaltfläche klicken, das ist, wie Browser verhalten und auf Refresh verhalten soll. Sie müssen die übergebenen Daten erneut an den Server senden. Wenn Sie dies vermeiden möchten, sollten Sie in Ihrer Submit-Handler-Methode eine Weiterleitung zu einer anderen URL durchführen, nachdem Sie alles gemacht haben, was Ihr Handler tut.

Beispiel: Wenn form.asp Ihr Formular anzeigt, können Sie in Ihrem Handler auf form.asp?message=thankyou umleiten (beachten Sie die andere URL). Im Falle einer Aktualisierung wird Ihr Formular nicht erneut vom Browser an den Server gesendet.

Am besten wäre es auch, eine 303 Redirect zu verwenden.

0

Sie sollten auf eine andere Seite umleiten, um dies zu vermeiden. Aber im Fall, wenn Sie auf der Workaround bleiben wollen, ist wie folgt.

In Ihrem Pageload_Event erfassen Sie die DateTime.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Session["update"]=Server.UrlEncode(System.DateTime.Now.ToString()); 
    } 
} 

Im Page_PreRender Ereignis kopieren kann die sessionVariable zu Viewstate Variable.You refer folgenden ein klares Verständnis auf Seite Lebenszyklus zu erhalten. „http://www.codeproject.com/Articles/667308/ASP-NET-Page-Life-Cycle-Events

public void Page_PreRender(object obj, EventArgs e) 
    { 
     ViewState["update"] = Session["update"]; 
    } 

Jetzt in Ihrem Taste auf Click-Ereignis vergleichen die Sitzung variable.Allow ans Viewstate in den Block, wenn beide Werte gleich sind.

+0

WOW, es ist zu viel Code. Kann die onclick-Methode eine javascrtip-Funktion für 'event.preventDefault() aufrufen;' –

+0

yeah Sie können es tun, indem Sie clientseitiges Skript mit ScriptManager-Klasse registrieren –

+0

Aber was ist der Code in dieser js-Funktion?einfach 'return false'? 'event.preventDefault();'? Es tut nichts, wenn ich versuche, dies zu tun. –

Verwandte Themen