使用ICallbackEventHandler接口更高效實現(xiàn)Ajax
使用ICallbackEventHandler接口可以方便地高效地實現(xiàn)Ajax功能
1、處理頁面需實現(xiàn)ICallbackEventHandler接口,此接口有兩個方法
a、GetCallbackResult 此方法返回處理結(jié)果給客戶端,請求完成后自動調(diào)用
b、RaiseCallbackEvent此方法是從客戶端獲取數(shù)據(jù) 由參數(shù)eventArgument 接收,并進(jìn)行相關(guān)處理得出結(jié)果
2、注冊回調(diào)和主調(diào)腳本
a、注冊回調(diào)函數(shù) string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context");
注冊一個對于回調(diào)函數(shù)的引用,用于獲取返回結(jié)果,并進(jìn)行業(yè)務(wù)邏輯處理,注冊的函數(shù)名和客戶端書寫的函數(shù)名需相同才能引用
b、注冊主調(diào)函數(shù),主調(diào)函數(shù),像服務(wù)器發(fā)送請求 string regCallbakeScript = "function CallServer(arg,context){" + reference + "}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true);
c、客戶端腳本:一個回調(diào)函數(shù)fucntion SendData(arg,context){alert(arg);}
直接調(diào)用CallServer函數(shù)發(fā)送請求
/// <summary> /// 實現(xiàn)ICallbackEventHandler接口,完成Ajax更快的功能 /// </summary> public partial class _Default : System.Web.UI.Page,ICallbackEventHandler { private string returnValue = string.Empty; protected void Page_Load(object sender, EventArgs e) { //注冊回調(diào)腳本、具體實現(xiàn)自己寫,此腳本中接收返回結(jié)果 string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context"); //注冊處理腳本 string regCallbakeScript = "function CallServer(arg,context){" + reference + "}"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true); } #region ICallbackEventHandler 成員 /// <summary> /// 返回結(jié)果 /// </summary> /// <returns></returns> public string GetCallbackResult() { if (string.IsNullOrEmpty(returnValue)) return (returnValue = "-1"); return returnValue; } /// <summary> /// 觸發(fā)RaiseCallbackEvent事件獲取客戶端數(shù)據(jù),然后進(jìn)行處理 /// </summary> /// <param name="eventArgument"></param> public void RaiseCallbackEvent(string eventArgument) { returnValue = eventArgument; } #endregion }
客戶端腳本代碼:
<script type="text/javascript">
//接收回調(diào)結(jié)果,此函數(shù)在處理服務(wù)器完成后自動回調(diào),即為回調(diào)函數(shù),相當(dāng)Ajax中的回調(diào)函數(shù)
function SendData(arg) {
alert(arg);
}
//客戶端邏輯函數(shù)
function GetReturnValue() {
var arg = "Hello CallbackEventHandler!";
//調(diào)用頁面加載完成后注冊的腳本,傳遞參數(shù)'arg'由服務(wù)器進(jìn)行處理,第二個參數(shù)'context'不用傳遞
CallServer(arg,"");
}
</script>
<input type="button" value="CallbackMe" id="btn" onclick="GetReturnValue()" />
版權(quán)聲明
作者:扶我起來我還要敲
地址:http://www.rzrgm.cn/Newd/p/4765815.html
? Newd 尊重知識產(chǎn)權(quán),引用請注出處
廣告位
(虛位以待,如有需要請私信)
浙公網(wǎng)安備 33010602011771號