Kann ich eine erstellen ASP.NET ImageButton, der nicht postback?
Ich versuche, die ImageButton-Steuerelement für client-side script execution only. Ich kann angeben, die client-seitiges script auszuführen, mit dem OnClientClick-Eigenschaft, aber wie verhindere ich, dass Sie versuchen, zu posten, jedes mal, wenn der Benutzer darauf klickt? Es gibt keinen Grund zu posten, wenn diese Schaltfläche geklickt wird. Ich habe CausesValidation auf False, das bedeutet aber nicht aufhören, es zu veröffentlichen.
- Jeder Grund, nicht zu verwenden Sie einfach das onclick-event des img-tag?
- Ich möchte es wenn möglich vermeiden. Diese Schaltfläche ist tief, Komplex und basiert auf der server-Seite.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Möglichkeit, Sie könnten es tun, ohne in Konflikt mit dem postback Funktion der anderen Steuerelemente:
Definieren Sie Ihre-Taste, so etwas wie dieses:
"Mein" endet in der Prozedur für OnClientClick ist ein Weg, um alias asp.net's __doPostBack-client Ereignis, zwingt das den postback; wir haben einfach überschreiben das Verhalten durch nichts zu tun, ähnlich wie dieses Skript:
Edit: Yeesh, ich fühle mich wie ich brauche, um eine Dusche zu nehmen, nachdem einige von den schmutzigen tricks, die ich ziehen müssen, um zu bekommen, asp.net zu tun, was ich will.
Ich weiß dieses problem wurde schon beantwortet, aber eine einfache Lösung "false" zurückgegeben, aus dem HTML-onclick-Methode (d.h. die ASPX-OnClientClick-Methode) z.B.
Rückgabe von false beendet den browser, der die Anfrage an den server zurück ich.s. Stoppt die .NET postback.
return false;
imOnClientClick
als CodeClimber vorgeschlagen, es funktioniert.Andere Lösung wäre, sich zu definieren PostBackUrl, die nichts tut,
asp:Literal
Kontrolle auf Ihrer Seite, und im code hinter dynamisch festlegen, text, d.h.:myLiteral.Text = "<img src=\"asdf\" onclick=\"DoYourThing();\" />";
Verwenden Sie eine server-side-Image-control -
Ziemlich sicher, dass Sie fügen Sie die client -
onclick
Ereignis, dass.Lösung 1
BZW.
Lösung 2
Zusätzlich (Lösung 2), javascript-Methode kann in dieser form
in der code-behind -
Dies funktioniert gut für mich:
Verwenden
OnClientClick
zu schreiben Ihr Skript undPostBackUrl="javascript:void(0);"
zu vermeiden postback.Verwenden OnClientClick zu schreiben Ihr Skript und PostBackUrl="javascript:void(0);" zu vermeiden postback