动态控制,禁用视图状态和回发
本文关键字:视图状态 动态控制 | 更新日期: 2023-09-27 17:51:08
在浪费了几个小时试图解决动态用户控制的ViewState
丢失后,我决定永久禁用ViewState
。
问题是我现在该怎么办?我应该如何保持动态控件的状态,使它们在回发后不会丢失。我正在考虑使用会话,但这意味着我必须为用户打开的每个页面/选项卡生成唯一的键,以便值不被覆盖(对吗?)。做这件事的最好方法是什么?
为了确保动态用户控件的视图状态,您需要确保
- 在每个post-back场景中创建动态控件
- 在页面生命周期中尽可能早地创建它们——init和load状态是最好的选择(在控制事件中加载它们不太可能工作)
- 动态控件层次结构应该完全相同,层次结构中的所有控件的id应该与之前的请求相同
- 总是分配id(否则它们可能会自动生成,并且可以有不同的值),分配应该在控件树中添加控件之前发生。
将视图状态存储改为"session"而不是"hidden field"并不能解决ASP. xml中存在的问题。. NET运行时已经加载了视图状态,或者无法将控件与其视图状态数据(从id和层次结构推断)关联