簡化: ASP.NET 事件觸發順序

來源:互聯網
上載者:User
using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : Page{    #region OnPreInit 第一步: 視圖未被還原(設定控制項屬性無效), 此處主要設定Theme(主題) ,讀寫設定檔屬性    protected override void OnPreInit(EventArgs e)    {            }    #endregion    #region OnInit 第二步: 在所有控制項都已初始化且已應用所有外觀設定後引發。使用該事件來讀取或初始化控制項屬性。    protected override void OnInit(EventArgs e)    {    }    #endregion    #region OnInitComplete 第三步: 由 Page 對象引發。使用該事件來處理要求先完成所有初始化工作的任務。    protected override void OnInitComplete(EventArgs e)    {    }    #endregion    #region PreLoad 第四步: html伺服器控制項的值在次恢複(值已經恢複),然後會處理 Request 執行個體包括的任何回傳資料。    protected override void OnPreLoad(EventArgs e)    {    }    #endregion    #region OnLoad 第五步: 以遞迴方式對每個子控制項執行相同操作,設定控制項中的屬性並建立資料庫連接。    protected override void OnLoad(EventArgs e)    {    }    #endregion    #region 第六步: 執行完之後,再執行使用者控制項的Page_Load()事件    protected void Page_Load(object sender, EventArgs e)    {            }    #endregion    #region 控制項事件 第七步: 控制項事件,如 Button 控制項的 Click 事件或 TextBox 控制項的 TextChanged 事件。    protected void Button1_Click(object sender, EventArgs e)    {    }    #endregion    #region OnLoadComplete 第八步: 對需要載入頁上的所有其他控制項的任務使用該事件。    protected override void OnLoadComplete(EventArgs e)    {           }    #endregion    #region OnPreRender 第九步: 設定了 DataSourceID 屬性的每個資料繫結控制項會調用 DataBind 方法, 使用該事件對頁或其控制項的內容進行最後更改    protected override void OnPreRender(EventArgs e)    {    }    #endregion    #region SaveStateComplete 第十步: 將忽略此時對頁或控制項進行的任何更改。    protected override void OnSaveStateComplete(EventArgs e)    {    }    #endregion    #region Render 第十一步    //Render    //這不是事件;在處理的這個階段,Page 對象會在每個控制項上調用此方法。    //所有 ASP.NET Web 伺服器控制項都有一個用於寫出發送給瀏覽器的控制項標記的 Render 方法。    //如果建立自訂控制項,通常要重寫此方法以輸出控制項的標記。    //不過,如果自訂控制項只合并標準的 ASP.NET Web 伺服器控制項,不合并自訂標籤,則不需要重寫 Render 方法。    //有關更多資訊,請參見開發自訂 ASP.NET 伺服器控制項。    //使用者控制項(.ascx 檔案)自動合并呈現,因此不需要在代碼中顯式呈現該控制項。    #endregion    #region OnUnload 第十二步: 該事件首先針對每個控制項發生,繼而針對該頁發生。在控制項中,使用該事件對特定控制項執行最後清理,    protected override void OnUnload(EventArgs e)    {    }    #endregion}

主版頁面和內容頁都可以包含控制項的事件處理常式。 對於控制項而言,事件是在本地處理的,即內容頁中的控制項在內容頁中引發事件,主版頁面中的控制項在主版頁面中引發事件。 控制項事件不會從內容頁發送到主版頁面。 同樣,也不能在內容頁中處理來自主版頁面控制項的事件。

在某些情況下,內容頁和主版頁面中會引發相同的事件。 例如,兩者都引發 Init 和 Load 事件。 引發事件的一般規則是初始化事件從最裡面的控制項向最外面的控制項引發,所有其他事件則從最外面的控制項向最裡面的控制項引發。 請記住,主版頁面會合并到內容頁中並被視為內容頁中的一個控制項,這一點十分有用。

下面是主版頁面與內容頁合并後事件的發生順序:

  1. 內容頁 PreInit 事件。

  2. 主版頁面控制項 Init 事件。

  3. 內容控制項 Init 事件。

  4. 主版頁面 Init 事件。

  5. 內容頁 Init 事件。

  6. 內容頁 Load 事件。

  7. 主版頁面 Load 事件。

  8. 主版頁面控制項 Load 事件。

  9. 內容頁控制項 Load 事件。

  10. 內容頁 PreRender 事件。

  11. 主版頁面 PreRender 事件。

  12. 主版頁面控制項 PreRender 事件。

  13. 內容頁控制項 PreRender 事件。

  14. 主版頁面控制項 Unload 事件。

  15. 內容頁控制項 Unload 事件。

  16. 主版頁面 Unload 事件。

  17. 內容頁 Unload 事件。

主版頁面和內容頁中的事件順序對於頁面開發人員並不重要。 但是,如果您建立的事件處理常式取決於某些事件的可用性,那麼您將發現,瞭解主版頁面和內容頁中的事件順序很有協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.