当使用LoadControl(字符串路径)以编程方式添加用户控件时,在用户控件的页面生命周期中,何时使用其viewstate初始化其子控件?
我问的是这个问题,因为我的一个用户控件正在以编程方式加载有一个TextBox控件没有被它在PageLoad事件上的PostBack上的viewstate初始化/加载(对于常规的.aspx不是这种情况)页面,因此我的困惑)。总的来说,我需要从Textbox控件中检索值。
由于
答案 0 :(得分:11)
在 Page_Load事件之前加载了 ViewState。如果您希望控件与ViewState一起使用,则需要加载它并在该事件之前将其添加到页面中 - 通常在PreInit上。
生命周期参考在这里:
http://msdn.microsoft.com/en-us/library/ms178472.aspx?ppud=4
阅读Pre Load
事件的描述,该事件紧接在页面加载之前:
如果您需要在加载事件之前对页面或控件执行处理,请使用此事件。
在Page实例引发此事件之前,它会为自身和所有控件加载视图状态,然后处理Request实例中包含的所有回发数据。
因此,通过预加载时间已经太晚了。此外,PreInit事件的描述特别提到它是“创建或重新创建动态控件”的地方。