ASP.NET 2.0 Callback 使得ASP.NET Server端控件能夠調用服務端的方法而不需要執行一個完整的Postback過程,也就是說使得Server端控件可以很好的支持Ajax。
Callback不同於Postback之處在於向服務器發送請求時只有ViewState和用戶自定義信息被發送到服務器端,請求完畢後,只返回用戶自定義結果,而不會從Render頁面。
GridView控件正是使用了這個技術來實現無刷新的分頁及排序功能,那麼它是如何實現的哪,我們又如何在自定義控件中添加該功能哪?本文將會簡單地闡述如何使用ASP.NET 2.0 Callback來實現Ajax.
1、ICallbackEventHandler 接口
ASP.NET Server端控件可以通過實現ICallbackEventHandler 接口來接受客戶端Callback事件。
ICallbackEventHandler 接口聲明:
1public interface ICallbackEventHandler 2{ 3 string GetCallbackResult(); 4 void RaiseCallbackEvent(string eventArgument); 5}
RaiseCallbackEvent負責處理客戶端回調事件,其中方法參數eventArgument是客戶端腳本在觸發Callback時提供的,該方法將會依賴於eventArgument參數來進行處理。
GetCallbackResult則負責將處理結果作為String返回給客戶端腳本。當Callback完成後客戶端腳本將會根據得到的處理結果,進行頁面局部更新。
2、CallbackEventReference
那麼怎麼樣才能注冊一段客戶端腳本來觸發Callback,還需要做些什麼哪?
ClientScriptManager類用於管理Web頁面中的客戶端腳本,提供了一系列的方法來注冊腳本,並且還可以獲得指定客戶端腳本函數的引用。通過ClientScriptManager類的GetCallbackEventReference方法我們可以獲取一個對客戶端函數的引用。當該函數在客戶端被調用時,將啟動一次客戶端回調。
GetCallbackEventReference方法聲明:
public string GetCallbackEventReference ( Control control, string argument, string clientCallback, string context, string clientErrorCallback, bool useAsync )