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.
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
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% 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.
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.
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.
& 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.
Tags und Links asp.net events onclick htmlbutton