当你不能使用ViewState时你会怎么做?

Fly*_*wat 7 asp.net viewstate webforms page-lifecycle

我有一个相当复杂的页面,可以在转发器内动态构建用户控件.在初始化之前,必须在Init页面事件期间绑定此转发器,ViewState否则动态创建的用户控件将不会保留其状态.

这会创建一个有趣的Catch-22,因为我需要在初始页面加载时创建绑定转发器的对象,然后将其保留在内存中,直到用户选择离开或保存为止.

因为我不能ViewState用来存储这个对象,但是在Init期间可以使用它,我被迫将它存储在Session中.

这也有问题,因为我必须在非回发期间显式地使会话值为空,以便模拟ViewState工作方式.

在这种情况下,必须有一种更好的状态管理方法.有任何想法吗?

编辑:一些关于使用的好建议LoadViewState,但是当我这样做时,我仍然遇到状态未恢复的问题.

这里有一点如果是页面结构

Page - > UserControl - > Repeater - >动态创建的N量UserControl.

我将重写LoadViewState放在父级中UserControl,因为它被设计为完全封装并独立于它所在的页面.我想知道问题出在哪里.

Gre*_*man 1

这也有问题,因为我必须在非回发期间显式地清空会话值,以便模拟 ViewState 的工作方式。

为什么必须式地将值清空(除了内存管理等)?是否没有检查 Page.IsPostback 的选项,以及是否对 Session 变量执行某些操作?