首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

深度解析 ASP.NET 2.0 中的 Callback 機制

     編輯:關於ASP.NET

從 ClientScript.GetCallbackEventReference 到伺服器端 RaiseCallbackEvent 的完整調用鏈

Callback vs Atlas (早期 AJAX 框架)

  • Callback:類 PostBack 介面、輕量、適合簡單無刷新需求、擴展性較弱。
  • Atlas:整合 Prototype、Backbase、AJAX.NET 精華、功能豐富、微軟主力推廣(Live.com 採用)。
  • 選型原則:合適才是最好,了解原理再決定。

客戶端觸發起點

<script type="text/javascript">
function any_script_function(arg, context) {
    <%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context") %>;
}
</script>

GetCallbackEventReference 參數詳解

參數說明
this實作 ICallbackEventHandler 的控件(頁面或自訂控件)
"arg"傳給 RaiseCallbackEvent 的字串引數
"ReceiveServerData"客戶端回呼函數名,簽章 function(result, context)
"context"原樣傳回回呼函數的第二參數,可攜帶額外資訊

伺服器端介面實作

public partial class CallbackPage : Page, ICallbackEventHandler
{
    private string _callbackResult;
    public void RaiseCallbackEvent(string eventArgument)
    {
        // 處理邏輯,產生結果字串
        _callbackResult = "Server processed: " + eventArgument;
    }
    public string GetCallbackResult() => _callbackResult;
}

完整流程

  1. 客戶端呼叫產生的 JS 函數 → 發送非同步 POST 至同頁面 URL。
  2. ASP.NET 管線識別回調請求 → 實例化頁面/控件 → 呼叫 RaiseCallbackEvent。
  3. 頁面生命週期縮短(僅 Init、Load、RaiseCallbackEvent、Render 回調結果)。
  4. 4. 回傳字串 → 客戶端 ReceiveServerData(result, context) 執行 UI 更新。

掌握此流程,可開發高效能回調控件、除錯回調失敗、整合第三方 AJAX 库。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved