页面生命周期
{
Response.Write("Page_PreInit<br/>");
}
protected void Page_Init(object sender, EventArgs e)
{
Response.Write("Page_Init<br/>");
}
protected void Page_InitComplete(object sender, EventArgs e)
{
Response.Write("Page_InitComplete<br/>");
}
protected void Page_PreLoad(object sender, EventArgs e)
{
Response.Write("Page_PreLoad<br/>");
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Page_Load<br/>");
}
protected void Page_LoadComplete(object sender, EventArgs e)
{
Response.Write("Page_LoadComplete<br/>");
}
protected void Page_PreRender(object sender, EventArgs e)
{
Response.Write("Page_PreRender<br/>");
}
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
Response.Write("Page_PreRenderComplete<br/>");
}
protected void Page_SaveStateComplete(object sender, EventArgs e)
{
Response.Write("Page_SaveStateComplete<br/>");
}
protected void Page_Unload(object sender, EventArgs e)
{
//Response.Write("Page_Unload<br/>");
int i = 0;
i++;//这行代码是用来设置断点的,这里不能用Response.Write
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("Button事件触发!<br/>");
}
输出结果:
Page_PreInit
Page_Init
Page_InitComplete
Page_PreLoad
Page_Load
Page_LoadComplete
Page_PreRender
Page_PreRenderComplete
Page_SaveStateComplete
button事件激发执行顺序
Page_PreInit
Page_Init
Page_InitComplete
Page_PreLoad
Page_Load
Button 事件触发!
Page_LoadComplete
Page_PreRender
Page_PreRenderComplete
Page_SaveStateComplete
2.具有master页的生命周期事件顺序


protected void Page_PreInit(object sender, EventArgs e)
{
Response.Write("MasterPage_PreInit<br/>");
}
protected void Page_Init(object sender, EventArgs e)
{
Response.Write("MasterPage_Init<br/>");
}
protected void Page_InitComplete(object sender, EventArgs e)
{
Response.Write("MasterPage_InitComplete<br/>");
}
protected void Page_PreLoad(object sender, EventArgs e)
{
Response.Write("MasterPage_PreLoad<br/>");
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("MasterPage_Load<br/>");
}
protected void Page_LoadComplete(object sender, EventArgs e)
{
Response.Write("MasterPage_LoadComplete<br/>");
}
protected void Page_PreRender(object sender, EventArgs e)
{
Response.Write("MasterPage_PreRender<br/>");
}
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
Response.Write("MasterPage_PreRenderComplete<br/>");
}
protected void Page_SaveStateComplete(object sender, EventArgs e)
{
Response.Write("MasterPage_SaveStateComplete<br/>");
}
protected void Page_Unload(object sender, EventArgs e)
{
//Response.Write("MasterPage_Unload<br/>");
int i = 0;
i++;//这行代码是用来设置断点的,这里不能用Response.Write
}
输出结果:
Page_PreInit
MasterPage_Init
Page_Init
Page_InitComplete
Page_PreLoad
Page_Load
MasterPage_Load
Page_LoadComplete
Page_PreRender
MasterPage_PreRender
Page_PreRenderComplete
Page_SaveStateComplete
单击button 事件执行顺序
Page_PreInit
Page_Init
Page_InitComplete
Page_PreLoad
Page_Load
Button 事件触发!
Page_LoadComplete
Page_PreRender
Page_PreRenderComplete
Page_SaveStateComplete
参考:亮剑.net
二、关于asp.net中页面事件加载的先后顺序
http://msdn.microsoft.com/zh-cn/library/dct97kc3.aspx
关于asp.net中页面事件加载的先后顺序
浏览下来发现并不是我现在所学的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事件,注意这个客户端事件是最后执行,即在服务器端所有事件执行完后才执行。