使用LoadControl(string path)方法在程序中添加用户控件时,当用户控件的页面生命周期中初始化其子控件的视图状态?我之所以问这个问题,是因为我的一个用户控件在Postback上没有通过它的视图状态在Page_Load事件中被初始化/加载(而这种情况不适用于常规的.aspx页面,这让我很困惑)。总的来说,我需要从文本框控件中检索值。谢谢。
在Page_Load事件之前,ViewState已经被加载。如果您希望控件能够使用ViewState,您需要在该事件之前将其加载并添加到页面上,通常是在PreInit事件中。
有关生命周期的参考文档在此处:
http://msdn.microsoft.com/en-us/library/ms178472.aspx?ppud=4
请阅读Pre Load
事件的描述,它紧接着Page Load:
如果需要在Load事件之前对页面或控件执行处理,请使用此事件。
在Page实例引发此事件之前,它会为自身和所有控件加载视图状态,然后处理包含在Request实例中的任何回发数据。
因此,在Pre Load时间点之前,已经为控件加载了视图状态,所以已经太晚了。此外,PreInit事件的描述特别提到它是“创建或重新创建动态控件”的地方。