研究服务器控件直到头晕。
总结:page对象将Ghost page class生成客户端网页(本质为html文本)。
第一阶段:OnInit ,生成控件-》容器-》网页。但此时这些控件的属性都是空或默认值。
第二阶段:获取数据。LoadViewState-》LoadPostBackData
第三阶段:OnLoad。完成数据绑定等工作。之后 RaisePostBackDataChangeEvent —》RaisePostBackEvent
第四阶段:(关键)OnPreRender。为生成html文档做准备。(关键动作:1、改变控件状态 2、添加javaScript代码)。——》SaveViewState()
第五阶段:Render
第六阶段:OnUnLoad
推荐Understanding ASP.NET View State
''''
在WebForm1页面上直接放置用户控件WebUserControl1时的事件顺序:
WebUserControl1_Init <br>
WebForm1_Init <br>
Page_Load <br>
WebUserControl1_Load <br>
WebForm1_PreRender <br>
WebUserControl1_PreRender <br>
WebUserControl1_Unload <br>
WebForm1_Unload <br>
在WebForm1页面的OnInit方法中用代码Load用户控件WebUserControl1时的事件顺序:
WebForm1_Init : OnInit
WebForm1: Loading controls
WebUserControl1_Init : OnInit
WebForm1: added to Controls
WebForm1: LoadViewState
WebUserControl1: LoadViewState
WebUserControl1: LoadPostData Begin
WebUserControl1: LoadPostData End
WebForm1_PageLoad: OnLoad after base's Onload.
WebUserControl1_Load: after base's OnLoad
iWebUserControl1: RaisePostDataChange
WebForm1: OnPreRender
WebUserControl1: OnPreRender
WebForm1: SavedViewState
WebUserControl1: SaveViewState
在WebForm1页面的Page_Load方法中用代码Load用户控件WebUserControl1时的事件顺序:
WebForm1_Init : OnInit
WebForm1: LoadViewState
WebForm1_PageLoad: OnLoad after base's Onload.
WebForm1: Loading controls
WebUserControl1_Init : OnInit
WebUserControl1: LoadViewState
WebForm1: added to Controls
WebUserControl1_Load: after base's OnLoad
WebUserControl1: LoadPostData Begin
WebUserControl1: LoadPostData End
iWebUserControl1: RaisePostDataChange
WebForm1: OnPreRender
WebUserControl1: OnPreRender
WebForm1: SavedViewState
WebUserControl1: SaveViewState
在WebForm1页面的Button1_Click事件中用代码Load用户控件WebUserControl1时的事件顺序:
WebForm1_Init <br>
Page_Load <br>
Button1_Click <br>
WebUserControl1_Init <br>
WebUserControl1_Load <br>
WebForm1_PreRender <br>
WebUserControl1_PreRender <br>
WebUserControl1_Unload <br>
WebForm1_Unload <br>
在WebForm1页面的Page_Load事件中用代码Load用户控件WebUserControl1,WebUserControl1又在Page_Load事件中用代码Load用户控件WebUserControl2时的事件顺序:
WebForm1_Init <br>
Page_Load <br>
WebUserControl1_Init <br>
WebUserControl1_Load <br>
WebUserControl2_Init <br>
WebUserControl2_Load <br>
WebForm1_PreRender <br>
WebUserControl1_PreRender <br>
WebUserControl2_PreRender <br>
WebUserControl2_Unload <br>
WebUserControl1_Unload <br>
WebForm1_Unload <br>