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

ASP.NET 控件事件開發:IPostBackEventHandler 介面與回傳事件完整實作

     編輯:關於ASP.NET

繼渲染管線後,本文聚焦控件的事件處理機制。ASP.NET Web 控件(如 Button、LinkButton、ImageButton)之所以能觸發伺服器端 Click 事件,關鍵在於它們實作了 IPostBackEventHandler 介面。

回傳事件核心流程

  1. 用戶點擊按鈕 → 瀏覽器發送 POST 請求,包含控件的 UniqueID 作為 __EVENTTARGET。
  2. ASP.NET 執行階段根據 __EVENTTARGET 找到目標控件。
  3. 若控件實作 IPostBackEventHandler,執行階段呼叫其 RaisePostBackEvent(string eventArgument) 方法。
  4. 控件在該方法中引發對應的事件(如 Click),進而執行使用者訂閱的事件處理常式。

自訂回傳事件控件實作範例

public class SuperButton : Control, IPostBackEventHandler
{
    // 1. 定義事件
    public event EventHandler Click;

    // 2. 引發事件的保護方法
    protected virtual void OnClick(EventArgs e)
    {
        Click?.Invoke(this, e);
    }

    // 3. 實作介面方法:處理回傳
    public void RaisePostBackEvent(string eventArgument)
    {
        OnClick(EventArgs.Empty);
    }

    // 4. 渲染:輸出帶有 name=UniqueID 的 submit 按鈕
    protected override void Render(HtmlTextWriter writer)
    {
        writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit");
        writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
        writer.AddAttribute(HtmlTextWriterAttribute.Value, "確定");
        writer.RenderBeginTag(HtmlTextWriterTag.Input);
        writer.RenderEndTag();
    }
}

兩大必要條件

  • 實作 IPostBackEventHandler 並正確處理 RaisePostBackEvent。
  • 渲染的表單元素必須有 name=UniqueID,否則執行階段無法辨識回傳來源。

進階:IPostBackDataHandler 與資料回傳

若控件需接收用戶輸入值(如 TextBox),還需實作 IPostBackDataHandler,包含 LoadPostData(讀取表單值)與 RaisePostDataChangedEvent(值變更時引發事件)。這將在後續文章詳細介紹。

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