0

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

当我们解码并检查页面的 ViewState 时,我们的值还没有被写出,因此不能用于以后的检索。

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

4

3 回答 3

1

问题是将控件直接添加到页面。不幸的是,这在控件层次结构中太高了,无法参与 Forms ViewState 处理。如果您将控件添加到实际的 ASPNet 表单的 Controls 集合中,那么它将成功地参与 LoadViewStateRecursive 和 SaveViewStateRecursive。

于 2008-09-25T01:24:48.313 回答
0

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

于 2008-09-25T00:03:09.820 回答
0

ViewState 直到 OnInit 之后才加载,但在 OnLoad 之前。

这是页面生命周期 ( GregMac ) 的粗略轮廓,在回答我之前的问题时发布了此内容。

  • 初始化
  • 加载视图状态
  • 加载回发数据
  • 呼叫控制加载事件
  • 调用加载事件
  • 呼叫控制事件
  • 控制预渲染
  • 预渲染
  • 保存视图状态
  • 卸下

  • 于 2008-09-25T00:39:00.950 回答