同桌上课用手指进去了好爽_欧美丰满熟妇xxⅹⅹ性大i_成人av天天日天天拍拍_猛男gay帅男gay男男同志_欧美va天堂在线观看_人妻无码av中文系列三里桃花_亚欧免费无码在线观看_久久久精品国产亚洲av水_日韩在线免费看污污污_2021无码专区人妻系列日韩

首頁 優(yōu)化推廣 ASP.NET 母版頁和內容頁中的事件

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

來源: | 時間:2011/3/29 10:12:19 |

母版頁和內容頁都可以包含控件的事件處理程序。對于控件而言,事件是在本地處理的,即內容頁中的控件在內容頁中引發(fā)事件,母版頁中的控件在母版頁中引發(fā)事件。控件事件不會從內容頁發(fā)送到母版頁。同樣,也不能在內容頁中處理來自母版頁控件的事件。

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

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

母版頁控件 Init 事件。

內容控件 Init 事件。

母版頁 Init 事件。

內容頁 Init 事件。

內容頁 Load 事件。

母版頁 Load 事件。

內容控件 Load 事件。

內容頁 PreRender 事件。

母版頁 PreRender 事件。

母版頁控件 PreRender 事件。

內容控件 PreRender 事件。

母版頁和內容頁中的事件順序對于頁面開發(fā)人員并不重要。但是,如果您創(chuàng)建的事件處理程序取決于某些事件的可用性,那么您將發(fā)現(xiàn),了解母版頁和內容頁中的事件順序很有幫助。

關于asp.net中頁面事件加載的先后順序

Page 執(zhí)行中將按照如下順序激活事件:

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


如果頁面從另一個頁面繼承,如basePage:System.Web.UI.Page,在basePage中做了一些擴展,如權限檢查,而其他頁面從basePage繼承,則basePage和最終Page的事件激活順序是:

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

如果使用了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

更進一步,如果ContentPage繼承basePage,那么,各事件的執(zhí)行順序將變成:

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


瀏覽下來發(fā)現(xiàn)并不是我現(xiàn)在所學的asp.net 1.1,估計應該是asp.net 2.0

不過也沒有關系,這讓我知道了他們有繼承時加載的順序。

即:先加載繼承頁的,再加載自己的,如果繼承頁有繼承則先加載繼承頁的繼承。

其實是個很簡單的內容。順便寫下Page事件(不知道1.1是不是就這些)

事件處理器名稱
發(fā)生時間

Page_Init
在Web窗體的視圖狀態(tài)加載服務器控件并對其初始化。

這是web窗體生命周期的第一步

Page_Load 在Page對象上載入服務器控件。由于此時視圖狀態(tài)信息是可以使用的,

因此載這里可以用代碼來改變空間的設置或者載頁面上顯示文本。

Page_PreRender 應用程序將要呈現(xiàn)Page對象
Page_Unload 頁面從內存中卸載
Page_Error 發(fā)生未處理的異常
Page_AbortTransaction 事務處理被終止
Page_CommitTransaction 事務處理被接受
Page_DataBinding 把頁面上的服務器空間和數(shù)據(jù)源綁定載一起
Page_Disposed Page對象從內存中釋放掉。這是Page對象生命周期中的最后一個事件

InitLoadPreRender事件執(zhí)行順序:
1)控件的Init事件
2)控件所在頁面的Init事件
3)控件所在頁面的Load事件
4)控件的Load事件
5)控件所在頁面的PreRender事件
6)控件的PreRender事件

規(guī)律:
1)Init事件從最里面的控件(包括用戶控件及普通控件)向最外面的控件(頁面)引發(fā),Load及PreRender等其他事件從最外面的控件向最里面的控件引發(fā);
2)控件之間相同事件的執(zhí)行順序依控件在頁面的位置按從左到右,從上到下的先后順序執(zhí)行。

注意:
1)切記用戶控件也被視為頁面中的一個控件;
2)把用戶控件作為單獨的一個特殊頁面來看,它本身及其所包含的控件同樣遵守相同的規(guī)律;
3)有時在客戶端程序(如javascript)中會用到客戶端body對像的onload事件,注意這個客戶端事件是最后執(zhí)行,即在服務器端所有事件執(zhí)行完后才執(zhí)行。

測試環(huán)境:
Windows2000 Pro+IIS5.0+Dotnet framework1.1


===================================================================================

轉載一篇關于頁面對象模型的文章,說得比較詳細,有助理解。沒事的時候就多看兩遍,慢慢體會:)。
ASP.NET 頁面對象模型
Dino Esposito
Wintellect
2003 年 8 月

適用于:
Microsoft(R) ASP.NET
摘要:了解為 ASP.NET Web 頁面建立的事件模型,以及 Web 頁面轉變?yōu)?HTML 過程中的各個階段。ASP.NET HTTP 運行時負責管理對象管道,這些對象首先將請求的 URL 轉換成 Page 類的具體實例,然后再將這些實例轉換成純 HTML 文本。本文將探討那些作為頁面生命周期標志的事件,以及控件和頁面編寫者如何干預并改變標準行為。(本文包含一些指向英文站點的鏈接。)

目錄
簡介
真正的 Page 類
頁面的生命周期
執(zhí)行的各個階段
小結

簡介
對由 Microsoft(R) Internet 信息服務 (IIS) 處理的 Microsoft(R) ASP.NET 頁面的每個請求都會被移交到 ASP.NET HTTP 管道。HTTP 管道由一系列托管對象組成,這些托管對象按順序處理請求,并將 URL 轉換為純 HTML 文本。HTTP 管道的入口是 HttpRuntime 類。ASP.NET 結構為輔助進程中的每個 AppDomain 創(chuàng)建一個此類的實例。(請注意,輔助進程為每個當前正在運行的 ASP.NET 應用程序維護一個特定的 AppDomain。)

HttpRuntime 類從內部池中獲取 HttpApplication 對象,并安排此對象來處理請求。HTTP 應用程序管理器完成的主要任務就是找到將真正處理請求的類。當請求 .aspx 資源時,處理程序就是頁面處理程序,即從 Page 繼承的類的實例。資源類型和處理程序類型之間的關聯(lián)關系存儲在應用程序的配置文件中。更確切地說,默認的映射集是在 machine.config 文件的 部分定義的。但是,應用程序可以在本地的 web.config 文件中自定義自己的 HTTP 處理程序列表。以下這一行代碼就是用來為 .aspx 資源定義 HTTP 處理程序的。


擴展名可以與處理程序類相關聯(lián),并且更多是與處理程序工廠類相關聯(lián)。在所有情況下,負責處理請求的 HttpApplication 對象都會獲得一個實現(xiàn) IHttpHandler 接口的對象。如果根據(jù) HTTP 處理程序來解析關聯(lián)的資源/類,則返回的類將直接實現(xiàn)接口。如果資源被綁定到處理程序工廠,則還需要額外的步驟。處理程序工廠類實現(xiàn) IHttpHandlerFactory 接口,此接口的 GetHandler 方法將返回一個基于 IHttpHandler 的對象。

HTTP 運行時是如何結束這個循環(huán)并處理頁面請求的?ProcessRequest 方法在 IHttpHandler 接口中非常重要。通過對代表被請求頁面的對象調用此方法,ASP.NET 結構會啟動將生成瀏覽器輸出的進程。

真正的 Page 類
特定頁面的 HTTP 處理程序類型取決于 URL。首次調用 URL 時,將構建一個新的類,這個類被動態(tài)編譯為一個程序集。檢查 .aspx 資源的分析進程的結果是類的源代碼。該類被定義為命名空間 ASP 的組成部分,并且被賦予了一個模擬原始 URL 的名稱。例如,如果 URL 的終點是 page.aspx,則類的名稱就是 ASP.Page_aspx。不過,類的名稱可以通過編程方式來控制,方法是在 @Page 指令中設置 ClassName 屬性。

HTTP 處理程序的基類是 Page。這個類定義了由所有頁面處理程序共享的方法和屬性的最小集合。Page 類實現(xiàn) IHttpHandler 接口。

在很多情況下,實際處理程序的基類并不是 Page,而是其他的類。例如,如果使用了代碼分離,就會出現(xiàn)這種情況。代碼分離是一項開發(fā)技術,它可以將頁面所需的代碼隔離到單獨的 C# 和 Microsoft Visual Basic(R) .NET 類中。頁面的代碼是一組事件處理程序和輔助方法,這些處理程序和方法真正決定了頁面的行為??梢允褂?標記對此代碼進行內聯(lián)定義,或者將其放置在外部類(代碼分離類)中。代碼分離類是從 Page 繼承并使用額外的方法的類,被指定用

服務熱線

153 8323 9821

功能和特性

價格和優(yōu)惠

網(wǎng)站和維護

推廣和優(yōu)化

微信服務號