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

ASP.NET 2.0 客戶端回呼機制完整實作教學

     編輯:關於ASP.NET

核心方法:GetCallbackEventReference

Page.ClientScript.GetCallbackEventReference 讓頁面或控制項實作 ICallbackEventHandler,生成客戶端呼叫伺服器、接收回傳資料的 JavaScript 程式碼,無需整頁回傳。

參數詳解

string callbackRef = Page.ClientScript.GetCallbackEventReference(
    this,           // 實作 ICallbackEventHandler 的頁面/控制項
    "message",      // 傳遞給伺服器 RaiseCallbackEvent 的引數
    "ShowServerTime", // 客戶端接收回傳資料的 callback 函式名稱
    "context",      // 客戶端內容物件(可為 null)
    "ErrorHandler", // 錯誤處理函式(可選)
    true            // 是否非同步
);

產生的客戶端代碼:WebForm_DoCallback('__Page', arg, ReceiveServerData, context, null, false)。

完整範例:取得伺服器時間

伺服器端 (ServerTime.aspx.cs)

public partial class ServerTime : Page, ICallbackEventHandler {
    protected string CallbackScript;
    protected void Page_Load(object sender, EventArgs e) {
        CallbackScript = Page.ClientScript.GetCallbackEventReference(this, "message", "ShowServerTime", "context");
    }
    public string RaiseCallbackEvent(string eventArgument) {
        return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
    }
}

客戶端 (ServerTime.aspx)

<script>
function GetServerTime() {
    var message = ''; var context = '';
    <%= CallbackScript %>  // 註入呼叫代碼
}
function ShowServerTime(timeMessage, context) {
    alert('伺服器時間:' + timeMessage);
}
</script>
<input type="button" value="取得伺服器時間" onclick="GetServerTime();" />

三種註冊呼叫腳本方式

  1. Page_Load 產生字串屬性,前端 <%= %> 輸出。
  2. OnPreRender 使用 RegisterStartupScript 註冊完整呼叫函式。
  3. 控制項 Render 階段直接輸出 onclick 等屬性。

適用場景與限制

  • 適用:輕量資料驗證、即時查詢、簡單計算回傳。
  • 不支援:複雜 UI 更新、檔案上傳、大量資料傳輸(建議改用 ASP.NET AJAX UpdatePanel 或 Web API + fetch)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved