ASP.NET2.0伺服器控制項之捕獲回傳事件

來源:互聯網
上載者:User

上一篇文章介紹了實現自訂伺服器控制項事件的基本概念。本文將通過典型樣本講解捕獲回傳事件的實現方法。

1. 實現捕獲回傳事件

如果伺服器控制項需要捕獲來自用戶端的回傳事件,並想為該回傳事件自訂伺服器端事件處理邏輯,那麼控制項必須實現System.Web.UI.IPostBackEventHandler介面。下面列舉了該介面定義。

public interface IPostBackEventHandler
{
 void RaisePostBackEvent(string eventArgument);
}

如上代碼所示,IPostBackEventHandler介面僅包括一個成員方法RaisePostBackEvent。該方法使伺服器控制項能夠處理將表單發送到伺服器時引發的事件,其參數eventArgument表示要傳遞到事件處理常式的可選事件參數。開發人員可以在RaisePostBackEvent方法中實現伺服器控制項回傳過程中執行的邏輯。一般情況下,RaisePostBackEvent方法將引發一個或者多個伺服器端事件。以下程式碼片段顯示了在伺服器上引發Click事件的RaisePostBackEvent實現。

public void RaisePostBackEvent(String eventArgument)
{
 OnClick(EventArgs.Empty);
}

實現捕獲回傳事件並不是僅僅使伺服器控制項類實現IPostBackEventHandler介面,並實現該介面成員方法就可以的。開發人員還需要注意實現其他內容。下面列舉了實現捕獲回傳事件程序中的三個要點。

第一,也是最重要的,即自訂伺服器控制項類必須實現IPostBackEventHandler介面,並實現該介面成員RaisePostBackEvent方法。這一過程在上文中已經進行了介紹。

第二,為控制項分配UniqueID。

定義引起回傳事件的控制項的name屬性值為UniqueID,是正確實現RaisePostBackEvent方法的關鍵之一。當引發回傳後,頁架構就會搜尋發送的內容,並確定發送對象的名稱是否與實現IPostBackEventHandler的伺服器控制項的UniqueID對應。如果對應,頁架構就會在該控制項上調用RaisePostBackEvent方法。這裡的重點是需要開發人員在呈現邏輯中,為控制項的name屬性分配UniqueID。下面列舉了一個簡單的程式碼範例。

protected override void Render(HtmlTextWriter output)
{
 output.Write("<INPUT TYPE=submit name="+this.UniqueID+"Value='Click Me' />");
}

如上代碼所示,在控制項呈現方法Render中,呈現了一個按鈕,其name屬性值為UniqueID。只有為引起回傳的控制項的name屬性分配了UniqueID,才能夠正確實現捕獲回傳事件。

第三,實現事件屬性結構。

事件屬性結構是一種最佳化的事件實現方式。在介紹之前,我們首先看看常見的控制項事件實現方式。具體代碼如下所示。

......
public class WebCustomControl:WebControl,IPostBackEventHandler{
 //聲明Click事件委託
 public event EventHandler Click;
 //實現RaisePostBackEvent方法
 void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) {
  OnClick(EventArgs.Empty);
 }
 //定義OnClick事件處理常式
 protected virtual void OnClick(EventArgs e) {
  if(Click != null) { Click(this,e); }
 }
 ......
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.