如何使用动态添加的Control子类访问Control.ViewState?

时间:2008-09-24 23:59:44

标签: asp.net controls viewstate

我们已经创建了一个控件,需要通过Control类的ViewState属性来持久保存数据。我们的类子类严格控制以获取对ViewState属性的访问(它在Page对象上受到保护)。我们将控件添加到OnInit中的Page.Controls,然后尝试在OnPreLoad中设置ViewState属性。

当我们解码并检查页面的ViewState时,我们的值尚未被写出,因此无法在以后检索。

有谁知道如何让我们的控制权参与ViewState流程?

3 个答案:

答案 0 :(得分:1)

问题是直接将控件添加到页面。不幸的是,控件层次结构太高,无法参与Forms ViewState Handling。如果将控件添加到某个实际的ASPNet Form的Controls集合中,那么它将成功参与LoadViewStateRecursive和SaveViewStateRecursive。

答案 1 :(得分:0)

尝试在OnInit中创建控件,然后在OnLoad期间将其添加到Page.Controls。

答案 2 :(得分:0)

ViewIn在OnInit之后,但在OnLoad之前不会加载。

以下是对我之前的一个问题的回应中发布的页面生命周期(GregMac)的概述。

  • 初始化
  • LoadViewState
  • 加载回发数据
  • 呼叫控制加载事件
  • 调用Load事件
  • 呼叫控制事件
  • 控制PreRender
  • 的PreRender
  • SaveViewState
  • 卸载