0

在浪费了数小时试图解决动态用户控制ViewState丢失的问题后,我决定永久禁用ViewState

问题是我现在该怎么办?我应该如何保持动态控件的状态,以免它们在回发后丢失。我正在考虑改用 Session ,但这意味着我必须为用户打开的每个页面/选项卡生成唯一的键,以便不会覆盖值(对吗?)。最好的方法是什么?

4

1 回答 1

0

为了确保动态用户控件的视图状态,您需要确保

  • 在每个回发场景中创建动态控件
  • 它们在页面生命周期中尽可能早地创建 - 初始化和加载状态是最好的选择(在控制事件中加载它们不太可能起作用)
  • 动态控件层次结构应完全相同,层次结构中的所有控件都应具有与先前请求中相同的 id
  • 始终分配 id(否则它们可能会自动生成并且可以具有不同的值)并且应该在将控件添加到控件树中之前进行分配。

将视图状态存储更改为会话而不是隐藏字段不会解决 ASP.NET 运行时已经加载视图状态或无法将控件与其视图状态数据相关联的问题(从 id 和层次结构推断) )

于 2013-01-10T10:55:58.570 回答