程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ICallbackEventHandler實現無刷新回調

ICallbackEventHandler實現無刷新回調

編輯:.NET實例教程
AJax技術所提倡的無刷新回調,在原來的技術中需要寫大量的JavaScript代碼或使用一些AJax框架,使得開發效率和可維護性大大降低。其實ASP.Net2.0中,已經提供了這樣的接口,這就是ICallbackEventHandler。
關於ICallbackEventHandler網上已經有很多文章介紹了,這篇實為畫蛇添足。

ICallbackEventHandler存在於System.Web.UI中,我們先做一個非常簡單的例子來試用一下。

第一步,在VS2005中建立一個新的WEB窗件。
第二步,在ASPX中,放上一段Html代碼(如下):


1<body>
2 <form id="form1" runat="server">
3 <div>
4 <button onclick="CallServer()">CallServer</button>
5 </div>
6 </form>
7</body>

第三步,然後在<HEAD></HEAD>中放入一段JavaScript腳本:


1 <script type="text/Javascript">
2 function CallServer()
3 {
4 var product = "測試";
5 <%= ClIEntScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;
6 }
7
8 function ReceiveServerData(rValue)
9 {
10 alert(rValue);
11 }
12 </script>


第四步,在此ASPX的後台CS代碼中,繼承ICallbackEventHandler接口,並實現接口中的兩個方法:
ICallbackEventHandler.GetCallbackResult()

ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)

第五步,增加一個變量CallBackValue,並修改接口的兩個方法為:


1 private string CallBackValue = string.Empty;
2
3 string ICallbackEventHandler.GetCallbackResult()
4 {
5 return CallBackValue + ",ok";
6 }
7
8 void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
9 {
10 this.CallBackValue = eventArgument;
11 }
12


第六步,運行,界面上會出現一個按鈕,點擊後,會將“測試”這個字符串傳至後台,後台C#代碼將字符串加上“,OK”後返回給客戶端的JavaScript代碼,並顯示。

以上六步,就可以實現無刷新回調了。現在,我們來分析一下幾段代碼。
先看第三步中的JavaScript代碼,其中的CallServer()方法中進行了回調,回調的語句為:
<%= ClIEntScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;

裡面四個參數中第二個參數指定將product這個Javascript中的字符串變量傳回後台,第三個參數指定了從後台返回時接收返回信息的JavaScript方法ReceiveServerData(string Value)。

第五步中後台的兩個方法,一個ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)用來接收前台Javascript中傳來的字符串變量,並賦值給內部變量this.CallBackValue,另一個方法ICallbackEventHandler.GetCallbackResult()將變更後的內部變量this.CallBackValue返回給前台JavaSc
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved