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