日期:2014-05-18  浏览次数:20394 次

page_Load事件是在什么时候执行呢?在page_Load事件中,向placeHolder添加控件能成功么?
page_Load事件是在什么时候执行呢?是页面开始加载时?页面加载完成时?还是页面加载过程中?

------解决方案--------------------
刷新或加载的时候进行!
------解决方案--------------------
page_Load看名字也是 页面加载过程中执行的,在它之前有PreInit,Init,PerLoad等事件
------解决方案--------------------
page生命周期
------解决方案--------------------
首先要澄清的是,这个所谓“加载”如果是说的是浏览器端,那么就是扯淡的江湖培训师的说法了。

这个加载是指服务器端为每一个对aspx的请求都要实例化一个Page对象,这叫做加载。因此假设一个用户在一个页面使用了10次操作,那么实际上服务器端可能加载了同一类型的页面总共11次,而asp.net就是使用ViewState来让用户以为好像是在同一个页面上一样——其实是11个页面实例。

这个加载,是指每一次相应请求(包括回发请求时)创建的独立的Page对象的生命周期。每一个页面生命周期都是瞬间——可能只有1秒钟,而不是你以为的持续10几分钟或者更长。
------解决方案--------------------
比如说你访问一个页面A(A的实例),那么页面在服务器端加载了一次。之后瞬间、次页面就销毁了,随后浏览去端收到了页面销毁之前输出的html字符流、从而在客户端加载此html。

然后你在页面上点击了一个按钮“创建”,于是服务器端又加载了一次A页面实例,同时触发了按钮事件,你可能在PlaceHolder中动态添加了一个用户控件时实例,并且为此用户控件初始化数值。此时你需要将此数据key保存到ViewState中。

接下来用户在页面撒谎功能点击了“修改”按钮,于是服务器有加载了一次A页面实例,你的代码在page_load中根据ViewState保存的值重建此PlaceHolder中的用户控件的架构(并不需要填入值,因为asp.net会自动查找你创建的架构然后把子控件的ViewState填入子控件)。然后你的代码在相应的修改事件中修改了刚刚动态创建的控件(也就是修改了其ViewState)。

如此又回到了上面。
------解决方案--------------------
asp.net页面生命周期:
http://www.cnblogs.com/yjmyzz/archive/2010/03/28/1698968.html
Page中触发事件顺序:
01.Page_PreInit
02.Page_Init
03.Page_InitComplete
04.Page_PreLoad
05.Page_Load
06.Page_LoadComplete
07.Page_PreRender
08.Page_SaveStateComplete
09.Page_Unload
如果加上按钮postback:
01.Page_PreInit
02.Page_Init
03.Page_InitComplete
04.Page_PreLoad
05.Page_Load
06.Button1_Click
07.Page_LoadComplete
08.Page_PreRender
09.Page_SaveStateComplete
10.Page_Unload
------解决方案--------------------
楼主看看页面生命周期吧,了解一下页面是怎么生成的