动态控件,禁用ViewState和Postbacks

时间:2013-01-10 10:10:31

标签: c# asp.net webforms viewstate

在浪费时间尝试解决动态用户控件ViewState丢失后,我决定暂时停用ViewState

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

1 个答案:

答案 0 :(得分:0)

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

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

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