asp.net页面生命周期:

1.调用FrameworkInitialize()方法初始化页面,创建控件树。

2.然后正式开始页面的生命周期:

2.1 设置IsPostBack属性的值。
2.2 触发PreInit事件,在该事件中已经可以使用IsPostBack属性了,在这个事件中还不能访问ViewState
    --应用母版页,应用皮肤
2.3 触发Init()事件。递归触发Init(),
//先触发页面中的每个控件的Init()事件,最后再触发页面自己的Init()事件。
    --当页面的Init()事件被触发完毕后,然后调用TrackViewState()方法,
    //开始ViewState跟踪,然后就可以向ViewState中写入数据了,
    //但是上次ViewState中的值,现在还获取不到。

2.4调用了LoadAllState()方法,这个方法的作用就是获取用户提交过来的
//隐藏域中的值,让后解析该值,并加载到ViewState集合中,
//然后我们就可以在ViewState集合中获取数据了。

2.5调用了ProcessPostData(_requestValueCollection,true)方法。
   --在这个方法中主要做了两件事:
   --1>根据用户提交过来的数据,判断某个服务器端控件的数据是否发生了改变,
   //如果发生了改变,则把该控件加到一个_changedPostDataConsumers集合中,
   然后在后续的步骤中,会依次触发这些控件的改变事件。
   --2>把那些服务器端控件提交过来的值,通过Request获取到,
   //然后设置到某个控件中。比如:this.textBox1.Text=Request["textBox1"];。
   //然后在后续的事件中就可以通过this.textBox1.Text来获取文本框中的值了。


2.6触发Page_PreLoad事件,页面加载事件之前的一个事件。

2.7递归触发页面的Page_Load事件,然后再触发页面上每个控件的Load事件。



2.8.第二次调用ProcessPostData(_leftOverPostData,false)方法。
//第二个参数表示是在页面加载之前调用的ProcessPostData()方法,
//还是在页面加载时候调用该方法。

2.9调用RaiseChangedEvents()方法触发元素的改变事件。

2.10调用RaisePostBackEvent()触发页面上的所有其他服务器控件的所有其他回发事件。

2.11触发Page_LoadComplete事件。

2.12触发Page_PreRender事件。

2.13触发Page_PreRenderComplete事件。

2.14调用SaveAllState()方法,保存ViewState数据。

2.15触发Page_SaveStateComplete事件。

2.16调用RenderControl()方法开始执行渲染,
//把服务器端标签生成对应的html标签。

2.17触发Page_Unload卸载页面。

Page_PreInit被触发了

Page_Init被触发了

Page_InitComplete

Page_PreLoad

Page_Load被触发了

Page_LoadComplete被触发了。

Page_PreRender被触发了。

Page_PreRenderComplete被触发了。

Page_SaveStateComplete被触发了。

Page_Unload卸载页面。

posted on 2017-04-21 09:31  NE_STOP  阅读(0)  评论(0编辑  收藏  举报  来源