动态控制,禁用视图状态和回发

本文关键字:视图状态 动态控制 | 更新日期: 2023-09-27 17:51:08

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

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

动态控制,禁用视图状态和回发

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

  • 在每个post-back场景中创建动态控件
  • 在页面生命周期中尽可能早地创建它们——init和load状态是最好的选择(在控制事件中加载它们不太可能工作)
  • 动态控件层次结构应该完全相同,层次结构中的所有控件的id应该与之前的请求相同
  • 总是分配id(否则它们可能会自动生成,并且可以有不同的值),分配应该在控件树中添加控件之前发生。

将视图状态存储改为"session"而不是"hidden field"并不能解决ASP. xml中存在的问题。. NET运行时已经加载了视图状态,或者无法将控件与其视图状态数据(从id和层次结构推断)关联