asp.net页面生命周期

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卸载页面。

(下接管道第十二个时间)

你可能感兴趣的:(Asp.net页面生命周期)