ASP.NET:Viewstate并以编程方式添加用户控件

时间:2009-11-04 15:19:05

标签: asp.net user-controls

当使用LoadControl(字符串路径)以编程方式添加用户控件时,在用户控件的页面生命周期中,何时使用其viewstate初始化其子控件?

我问的是这个问题,因为我的一个用户控件正在以编程方式加载有一个TextBox控件没有被它在PageLoad事件上的PostBack上的viewstate初始化/加载(对于常规的.aspx不是这种情况)页面,因此我的困惑)。总的来说,我需要从Textbox控件中检索值。

由于

1 个答案:

答案 0 :(得分:11)

在 Page_Load事件之前加载了 ViewState。如果您希望控件与ViewState一起使用,则需要加载它并在该事件之前将其添加到页面中 - 通常在PreInit上。

生命周期参考在这里:
http://msdn.microsoft.com/en-us/library/ms178472.aspx?ppud=4

阅读Pre Load事件的描述,该事件紧接在页面加载之前:

  

如果您需要在加载事件之前对页面或控件执行处理,请使用此事件。

     

在Page实例引发此事件之前,它会为自身和所有控件加载视图状态,然后处理Request实例中包含的所有回发数据。

因此,通过预加载时间已经太晚了。此外,PreInit事件的描述特别提到它是“创建或重新创建动态控件”的地方。