ASP.NET: OnServerClick-Ereignishandler wird nicht aufgerufen, wenn onclick verwendet wird

8

Ich habe ein eigenartiges Problem hier und ich kann nicht durch mein Leben herausfinden, was die Lösung ist. Beachten Sie, dass der folgende Code nicht dynamisch erstellt wird, sondern direkt in meiner aspx -Datei.

%Vor%

Das funktioniert gut, solange ich nicht das onclick -Attribut dort habe, d. h. der OnServerClick -Handler wird ausgelöst, wie es sollte. Aber wenn ich das Attribut onclick verwende, ist es das nicht, egal ob ich das Bestätigungsdialogfeld bestätige oder ablehne.

Was mache ich falsch? Danke

    
Deniz Dogan 07.08.2009, 14:27
quelle

7 Antworten

15

Wenn Sie sich den erzeugten Quellcode ansehen, sehen Sie Folgendes:

%Vor%

Also, was passiert, ist das _doPostBack wird nie aufgerufen. Der Hacky-Weg zu tun, was Sie suchen, ist das Folgende:

%Vor%

Der richtige Weg wäre die Verwendung eines Web-Controls:

%Vor%     
Yuriy Faktorovich 07.08.2009, 14:41
quelle
3

Ich hatte mehr Erfolg mit

%Vor%     
keith 18.01.2010 07:07
quelle
2

Die angenommene Antwort ist nicht perfekt. Wenn Sie type="button" nicht verwenden, führt die Webseite Postback aus, auch wenn Sie auf Abbrechen geklickt haben. Der korrekte und einfachste Weg besteht darin, die Kurzschlussauswertung zu nutzen und diesen Hack zu machen: Ersetze ; mit && ! , wie unten.

%Vor%

Die Ausgabe sieht folgendermaßen aus:

%Vor%

Er gibt den korrekten Rückgabewert, weil true && !undefined true zurückgibt und undefined wird ausgewertet und false && !undefined gibt false zurück und undefined wird NICHT ausgewertet, was genau das ist, was wir wollen.

    
Mygod 18.04.2014 11:35
quelle
1

Wie wäre es mit dem changing buttons type zu übermitteln, funktioniert es gut:

%Vor%     
Canavar 07.08.2009 14:47
quelle
1

Versuchen Sie Folgendes:

%Vor%     
MBahamondes 20.10.2015 19:19
quelle
1

Es hört sich so an, als ob das Onclick-Ereignis nicht durchbrennt.

Sie sollten nur in der Lage sein,

zu verwenden %Vor%

Ich glaube nicht, dass das andere onClick notwendig sein sollte.

Bearbeiten:

Bei dieser Methode müssen Sie Ihre Funktion manuell mit dem OnClick-Ereignis verknüpfen.

Ich stelle mir heute Morgen Attribute zusammen, in einem vergeblichen Versuch, mich selbst zu erlösen -

Eine andere Methode wäre, JavaScript einzufügen, um das Ereignis abzufangen. Etwas wie ..

%Vor%

Ich erinnere mich, dass es dafür einen besseren Inline-Weg gibt. Coffein Zeit jetzt.

    
Kelly Gendron 07.08.2009 14:37
quelle
0

& lt; Schaltfläche & gt; ist ein HtmlButton-Steuerelement, bei dem OnServerClick das einzige serverseitige Klickereignis ist. OnClick wird von ASP.NET nicht erkannt, sodass es an den Client intakt übergeben wird, wenn Sie möchten, dass ein clientseitiger JavaScript-Code vor dem Postback ausgeführt wird.

& lt; asp: Schaltfläche & gt; ist ein WebControl, das dasselbe mit dem On-Click-Server-seitigen Ereignis und OnClientClick für die Client-Seite erreicht.

Ich denke, Sie bekommen das Verhalten, das Sie sehen, weil Ihre Bestätigung ('sicher?') false zurückgibt, was den Postback-Mechanismus stoppt. Das würde erklären, warum es funktioniert, wenn du keinen onclick an Ort und Stelle hast.

    
n8wrl 07.08.2009 14:44
quelle

Tags und Links