Share via


Generieren von clientseitigen Skripts für Postback

Nur zwei HTML-Formularelemente (Schaltfläche und Symbolschaltfläche) können das Postback eines Formulars bewirken. Wenn durch das benutzerdefinierte Steuerelement ein HTML-Element bereitgestellt wird, das nicht zu einem Postback führt (z. B. Textfelder oder eine Schaltfläche mit einem Link), das Steuerelement aber ein Postback initiieren soll, kann dies in ASP.NET durch eine Ereignisarchitektur verwirklicht werden, die auf einem clientseitigen Skript (JScript, JavaScript) beruht.

Um einen solchen Postback-Mechanismus zu ermöglichen, müssen vom Entwickler nur einige kleine Änderungen an den Steuerelementen vorgenommen werden. In folgendem Codefragment ist der Code hervorgehoben, der zur Render-Methode eines Steuerelements hinzugefügt wird, um Postback zu initiieren.

protected override void Render(HtmlTextWriter output) {
                  output.Write("<a  id=\"" + this.UniqueID + "\" href=\"javascript:" + Page.GetPostBackEventReference(this) +"\">");
                  output.Write(" " + this.UniqueID + "</a>");
            }
[Visual Basic]
Protected Overrides Sub Render(output As HtmlTextWriter)
   output.Write("<a  id=""" & Me.UniqueID & _
         """ href=""javascript:" & _         Page.GetPostBackEventReference(Me) & """>")
   output.Write(" " & Me.UniqueID & "</a>")
End Sub

Durch die GetPostBackEventReference-Methode wird das clientseitige Skript ausgegeben, mit dem Postback initiiert wurde. Des Weiteren wird ein Verweis auf das Steuerelement bereitgestellt, von dem das Postback-Ereignis ausgelöst wurde.

Kompilieren Sie zum Verständnis der GetPostBackEventReference-Methode den Code des nächsten Abschnitts (Beispiel für Postback mit clientseitigem Skript), und rufen Sie in einem Browser die dazugehörige .aspx-Seite auf. Mit dem Browserbefehl Quelldatei anzeigen wird der folgenden HTML- und Skriptcode der bereitgestellten Seite angezeigt. (Die tatsächlichen Werte des Namens und der ID-Attribute des Formulars können unterschiedlich sein, ebenso die Attributwerte der versteckten Variable.)

<html>
<body>
<form name="ctrl2" method="POST" action="MyLinkButton.aspx" id="ctrl2">
<input type="hidden" name="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" value="dDwtMjI1NTgwNDE2Ozs+eIZ+AfRvoCj1nWimbh+zPv/rKNg=" />                  
Here is the custom link button.<br>
<a  id ="Link" href="javascript:__doPostBack('Link','')"> Link</a> 
<br><br>
<input name="TextBox" type="text" value="Click the link" id="TextBox" style="background-color:Cyan;width:200px;" /> 
<br>                                                
<script language="javascript"><!--      function __doPostBack(eventTarget, eventArgument) {            var theform = document.ctrl2            theform.__EVENTTARGET.value = eventTarget            theform.__EVENTARGUMENT.value = eventArgument            theform.submit()      }// --></script>
</form>                  
</body>                        
</html>            

Die im Beispiel fett hervorgehobenen Elemente – zwei versteckte Felder und die Methode des clientseitigen Skriptes – werden durch das ASP.NET-Seitenframework hinzugefügt. Durch die versteckten Formularfelder wird angezeigt, an welche Serversteuerelemente etwas gesendet werden soll. Optional wurde ein Argument für die Übergabe angegeben. Die Methode im clientseitigen Skript wird zum Belegen der versteckten Felder verwendet und bewirkt die Übertragung des Formulars an den Server. Das vollständige Beispiel finden Sie unter Beispiel für Postback mit clientseitigem Skript.

Siehe auch

Beispiel für Postback mit clientseitigem Skript