共用方式為


產生回傳的用戶端指令碼

只有兩個 HTML 表單項目 (按鈕和影像按鈕) 會造成表單回傳。如果您的自訂控制項呈現不會產生回傳的 HTML 項目 (例如文字方塊或連結按鈕),而您想要控制項啟始回傳,您可以在 ASP.NET 中透過依賴用戶端指令碼 (JScript、JavaScript) 的事件架構來為此撰寫程式。

控制項開發人員需要對他們的控制項做一些小幅變更,以啟用這個回傳機制。下列程式片段示範 (以粗體) 程式碼,它必須加入至控制項的 Render 方法來啟始回傳。

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

GetPostBackEventReference 方法會發出啟始回傳的用戶端指令碼,並且也提供啟始回傳事件的控制項的參考。

若要瞭解 GetPostBackEventReference 方法所做的,請編譯下一章節使用用戶端指令碼回傳範例中的程式碼,並要求您瀏覽器中附帶的 .aspx 網頁。如果您使用您瀏覽器的 [檢視原始檔] 命令來檢視呈現的網頁的原始檔,您將會看到下列 HTML 和指令碼 (表單的 name 和 id 屬性的實際值會有不同,而隱藏變數的 value 屬性也如此)。

<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>            

這個範例中粗體的項目 - 兩個隱藏欄位和用戶端指令碼方法 - 為 ASP.NET 網頁架構所加入的。隱藏表單欄位指示要張貼至哪個伺服器控制項,並選擇性指定要傳遞的引數。用戶端指令碼方法被用來設定隱藏欄位,並致使表單被送出至伺服器。如需完整範例,請參閱使用用戶端指令碼回傳範例

請參閱

使用用戶端指令碼回傳範例