ASP.NET 母版页和内容页中的事件javascript
母版页和内容页均可以包含控件的事件处理程序。对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引起事件,母版页中的控件在母版页中引起事件。控件事件不会从内容页发送到母版页。一样,也不能在内容页中处理来自母版页控件的事件。java
在某些状况下,内容页和母版页中会引起相同的事件。例如,二者都引起 Init 和 Load 事件。引起事件的通常规则是初始化事件从最里面的控件向最外面的控件引起,全部其余事件则从最外面的控件向最里面的控件引起。请记住,母版页会合并到内容页中并被视为内容页中的一个控件,这一点十分有用。web
下面是母版页与内容页合并后事件的发生顺序:服务器
母版页控件 Init 事件。asp.net
内容控件 Init 事件。.net
母版页 Init 事件。对象
内容页 Init 事件。继承
内容页 Load 事件。生命周期
母版页 Load 事件。事件
内容控件 Load 事件。
内容页 PreRender 事件。
母版页 PreRender 事件。
母版页控件 PreRender 事件。
内容控件 PreRender 事件。
母版页和内容页中的事件顺序对于页面开发人员并不重要。可是,若是您建立的事件处理程序取决于某些事件的可用性,那么您将发现,了解母版页和内容页中的事件顺序颇有帮助。
关于asp.net中页面事件加载的前后顺序
Page 执行中将按照以下顺序激活事件:
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,那么,各事件的执行顺序将变成:
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
浏览下来发现并非我如今所学的asp.net 1.1,估计应该是asp.net 2.0,
不过也没有关系,这让我知道了他们有继承时加载的顺序。
即:先加载继承页的,再加载本身的,若是继承页有继承则先加载继承页的继承。
实际上是个很简单的内容。顺便写下Page事件(不知道1.1是否是就这些)
事件处理器名称
发生时间
Page_Init
在Web窗体的视图状态加载服务器控件并对其初始化。
这是web窗体生命周期的第一步
Page_Load 在Page对象上载入服务器控件。因为此时视图状态信息是能够使用的,
所以载这里能够用代码来改变空间的设置或者载页面上显示文本。
Page_PreRender 应用程序将要呈现Page对象
Page_Unload 页面从内存中卸载
Page_Error 发生未处理的异常
Page_AbortTransaction 事务处理被终止
Page_CommitTransaction 事务处理被接受
Page_DataBinding 把页面上的服务器空间和数据源绑定载一块儿
Page_Disposed Page对象从内存中释放掉。这是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事件,注意这个客户端事件是最后执行,即在服务器端全部事件执行完后才执行。