asp.net 2.0中GetCallbackEventReference的用法

 

GetCallbackEventReference的用法

參考網址: http://pwqzc.cnblogs.com/archive/2005/11/10/273277.html
 http://mscenter.edu.cn/zhuanti/dianziqikan/13/jssl5.htm

怎樣確定將事件綁定到那個腳本函數呢?要靠Page類中的GetCallbackEventReference函數。看這個例子:
 string callbackRef = GetCallbackEventReference(this,"document.all['cboEmployees'].value","UpdateEmployeeViewHandler",  "null", "null");
GetCallbackEventReference函數的第一個參數制定了服務器端將要處理回調的目標對象。如果傳入的是this,則表示頁面本身。也可以傳入任何實現了ICallbackEventHandler的頁面控件(page control)的引用。在任何情況下,客戶端的提交動作(submit action)會提交至和標準回傳(postback)機制相同的ASPX頁面。
第二個參數是一個JavaScript常量表達式,表示傳給服務器的輸入數據。在上面的代碼中,一個下拉列表(dorp-down list)當前選中元素(element)的值被傳入。
第三個參數是一個用戶定義在<script>塊中的JavaScript回調(callback)函數名。回調(callback)執行後,此函數最終負責頁面的更新。最後兩個可選參數可用來指定錯誤處理函數(error handler)和上下文對象(context object)。
////////////////////////////////以下解釋自己Cnblog////////////////////////////////////////////////////
/
第一個:實現了ICallbackEventHandler藉口的頁面或者服務器控件,寫this代表但前頁面。
第二個:代表你從要從客戶端傳遞給服務器RaiseCallbackEvent方法的值
第三個:你要在客戶端寫的一個js函數,同時,服務器也會把計算得到的數據傳遞給這個函數做爲這個函數的參數。
第四個:context具體什麼意思我也不太清楚
/
//////////////////////////////////////////////////////////////////////////////////////
GetCallbackEventReference函數將產生如下的腳本調用:
 WebForm_DoCallback(pageID, input, UpdateEmployeeViewHandler, null, null);
此函數的代碼會自動下載到客戶端並通過<script>標籤添加到頁面響應(page's response)中。WebForm_DoCallback 使用XmlHttpRequest DOM對象(XmlHttpRequest DOM object)回調(call back)當前頁面的URL。與此同時,它會添加一些額外的隱藏域(hidden field)以便服務器區分更簡單的輕量級回調(callback)請求和一般回傳(postback)請求。
處理請求時,ASP.NET運行時(runtime)標識出調用的目標對象(傳給GetCallbackEventReference的第一個參數),確認它實現了ICallbackEventHandler接口後調用RaiseCallbackEvent方法:
 public virtual string RaiseCallbackEvent(string eventArgument)
 {
 // Do something with the input and generate the output
 return ProcessTheCall(eventArgument);
 }
RaiseCallbackEvent的接收參數和返回值均爲字符串(string)類型。它也包含任意處理客戶端輸入並返回響應(response)的代碼。客戶端和服務器間的數據交換僅能通過字符串(string)進行。一個字符串(string)可包含任何信息,包括序列化的對象(serialized object)。其格式可由你隨心所欲指地定。的返回值將被傳入客戶端的JavaScript回調(callback)函數(前面代碼中的UpdateEmployeeViewHandler函數)。這裏是其必須的原形(prototype):
 function UpdateEmployeeViewHandler(result, context)
 {
 // "result" is the return value of RaiseCallbackEvent
 // TO DO: Process the string and update the page using DHTML
 }
上面說過,腳本回調(script callback)並不適用於所有瀏覽器,儘管最新的瀏覽器,包括Internet Explorer 5+, Netscape 6+, and Safari1.2+都能行。Microsoft在ASP.NET 2.0中加入了兩個新的browser bapabilities:SupportsXmlHttp 與SupportsCallback以便開發人員檢查方案的可行性。
一條讓頁面刷新更快的告誡
儘管腳本回調(script callback) 定義在ASP.NET 2.0中,要使其在ASP.NET 1.1裏工作也並不很困難。在ASP.NET 2.0中,很多服務器控件(server control)藉助腳本回調(script callback)提供了更迅速的頁面刷新。最突出的例子也許是GridView控件(GridView control),作爲DataGrid的接班人,選擇性地運用腳本回調(script callback)實現分頁顯示記錄。
正如前面所說,腳本回調(script callback)依賴於文檔對象模型(DOM)的XmlHttpRequest對象。在Internet Explorer中,此文檔對象模型對象(DOM object)通過ActiveX控件(ActiveX control)實現——Microsoft.XmlHttp。在IE中瀏覽這樣的頁面時,你必須適當降低安全設置以允許ActiveX控件(ActiveX control)能被腳本調用。在其他以同樣方式實現XmlHttpRequest文檔對象模型對象(DOM object)的瀏覽器中,這是不必要的。事實上,基於Mozilla的瀏覽內置支持了HTTP請求功能器,而沒用使用ActiveX控件(ActiveX control)——這也是在Internet Explorer 7.0中被寄予厚望的功能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章