页面生命周期

protected void Page_PreInit(object sender, EventArgs e)
        {
            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页的生命周期事件顺序

 

 

页面生命周期页面生命周期Code
  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事件,注意这个客户端事件是最后执行,即在服务器端所有事件执行完后才执行。

posted @ 2012-09-02 21:59  liangshibiao  阅读(141)  评论(0)    收藏  举报