91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Asp.NET頁面中事件加載的先后順序

發布時間:2021-06-04 15:04:53 來源:億速云 閱讀:201 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Asp.NET頁面中事件加載的先后順序,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

ASP.NET 母版頁和內容頁中的事件

我們知道母版頁和內容頁都可以包含控件的事件處理程序。對于控件而言內容頁中的控件在內容頁中引發事件,母版頁中的控件在母版頁中引發事件。控件事件不會從內容頁發送到母版頁,也不能在內容頁中處理來自母版頁控件的事件,它們只會在自己事件內部進行處理。

下面是母版頁(Master)與內容頁(ContentPage)合并后事件的發生順序:

Master頁面控件 Init 事件。
ContentPage頁面控件 Init 事件。
Master頁 Init 事件。
ContentPage頁 Init 事件。
ContentPage頁 Load 事件。
Master頁 Load 事件。
ContentPage頁面控件 Load 事件。
ContentPage頁面 PreRender 事件。
Master頁面 PreRender 事件。
Master頁面控件 PreRender 事件。
ContentPage頁面控件 PreRender 事件。

母版頁和內容頁中的事件順序對于頁面開發人員并不重要。但是,如果創建的事件處理程序取決于某些事件的可用性,了解母版頁和內容頁中的事件順序很有幫助。

Asp.Net中頁面事件加載的先后順序

1、單獨一個Page 執行中將按照如下順序激活事件:

Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete

2、如果頁面從另一個頁面繼承,如BasePage:System.Web.UI.Page ,在BasePage中添加了一下驗證功能,如是否登錄、是否擁有權限等方面的檢查,而其它頁面從BasePage繼承,則BasePage和最終Page的事件激活順序是:

BasePage.PreInit
Page.PreInit
BasePage.Init
Page.Init
BasePage.InitComplite
Page.InitComplite
BasePage.PreLoad
Page.PreLoad
BasePage.Load
Page.Load
BasePage.LoadComplete
Page.LoadComplete
BasePage.PreRender
Page.PreRender
BasePage.PreRenderComplete
Page.PreRenderComplete

3、如果使用了MasterPage,則MasterPage中的事件和ContentPage中的事件按照下面順序激活:

ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete

需要注意的是Master里面是沒有PreInit事件。

4、如果ContentPage繼承BasePage,那么,各事件的執行順序將變成:

BasePage.PreInit
ContentPage.PreInit
Master.Init
BasePage.Init
ContentPage.Init
BasePage.InitComplite
ContentPage.InitComplite
BasePage.PreLoad
ContentPage.PreLoad
BasePage.Load
ContentPage.Load
Master.Load
BasePage.LoadComplete
ContentPage.LoadComplete
BasePage.PreRender
ContentPage.PreRender
Master.PreRender
BasePage.PreRenderComplete
ContentPage.PreRenderComplete

只需要記住:先加載繼承頁,再加載自己,如果繼承頁有繼承則先加載繼承頁的繼承。

事件處理器名稱發生時間
Page_Init在Web窗體的視圖狀態加載服務器控件并對其初始化。 這是窗體生命周期的第一步
Page_Load在Page對象上載入服務器控件。由于此時視圖狀態信息是可以使用的,因此載這里可以用代碼來改變空間的設置或者載頁面上顯示文本。
Page_PreRender應用程序將要呈現Page
Page_Unload頁面從內存中卸載
Page_Error發生未處理的異常
Page_AbortTransaction事務處理被終止
Page_CommitTransaction事務處理被接受
Page_DataBinding把頁面上的服務器空間和數據源綁定載一起
Page_DisposedPage對象從內存中釋放掉。這是Page對象生命周期中的最后一個事件

Init,Load,PreRender事件執行順序:

      1)控件的Init事件

      2)控件所在頁面的Init事件

      3)控件所在頁面的Load事件

      4)控件的Load事件

      5)控件所在頁面的PreRender事件

      6)控件的PreRender事件

個人研究的一些心得體會:(下面的兩點可以通過自建頁面并重寫相關事件進行驗證)

1.Init事件從最里面的控件(例如用戶控件)向最外面的控件(頁面)引發,Load及PreRender等其他事件從最外面的控件向最里面的控件引發。

2.控件之間相同事件的執行順序依控件在頁面的位置按從左到右,從上到下的先后順序執行。

注意:

      1. 切記用戶控件也被視為頁面中的一個控件;

      2. 把用戶控件作為單獨的一個特殊頁面來看,它本身及其所包含的控件同樣遵守相同的規律。

      3. 如果客戶端程序(如JavaScript)中會用到客戶端body對像的onload事件,注意這個客戶端事件是最后執行,即在服務器端所有事件執行完后才執行。

      4. Master、用戶自定義控件里面是沒有PreInit、OnComplete事件.Master本身就是一個用戶控件usercontrol,usercontrol繼承TemplateControl,TemplateControl繼承Control,讓我們看看Control里面可重寫的事件(部分截圖),也可以查看此官方文檔:https://referencesource.microsoft.com/#System.Web/UI/Control.cs,87dbac93d9749fa2。

Asp.NET頁面中事件加載的先后順序

關于“Asp.NET頁面中事件加載的先后順序”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵璧县| 溧水县| 渝北区| 福建省| 吴旗县| 武功县| 慈利县| 德化县| 房产| 拉孜县| 胶南市| 平泉县| 中江县| 铁岭市| 佛山市| 新河县| 霍邱县| 富民县| 夏河县| 静乐县| 云浮市| 丘北县| 大庆市| 大安市| 青海省| 蒙山县| 慈利县| 铜陵市| 合江县| 贵定县| 韶山市| 汶上县| 莲花县| 长春市| 石嘴山市| 瓦房店市| 安泽县| 景东| 洪江市| 三门峡市| 封开县|