我想在会话中保持特定页面的视图状态,但是下面的代码块对我没有帮助,我可能会缺少什么?
所以这是我的页面的代码隐藏文件内容;
public partial class ConfigurationEditorWebForm : PageBase { protected void Page_Load(object sender, EventArgs e) { } protected override bool VerifyAccess() { return true; } protected override PageStatePersister PageStatePersister { get { return new SessionPageStatePersister(this); } } }
tsimon.. 9
请注意,即使将页面状态移动到查看状态,您仍会在页面上看到__Viewstate元素.
此外,我相信这个解决方案可能比其他解决方案更正确,因为它更优雅地处理后退按钮.当您将ViewState存储在隐藏变量中时,它将成为HTML的一部分,因此,如果用户单击后退按钮2或3页并继续他正在执行的操作,则可以使用它.盲目地将Viewstate与每个页面请求一起删除将阻止后退按钮按照用户期望的方式运行.
但是,首先要注意的是,这可能不是一个好主意.我建议先做至少两件事:
首先,确保已关闭所有不需要它的控件(可能是其中大部分控件)的Viewstate.您可以通过将"IsViewstateEnabled"设置为false来执行此操作.
其次,在您的网络服务器上打开http压缩.即使您有一个合理大小的视图状态,总页面权重(压缩后 - 不在浏览器中查看)应该相对较小.
希望有所帮助!
请注意,即使将页面状态移动到查看状态,您仍会在页面上看到__Viewstate元素.
此外,我相信这个解决方案可能比其他解决方案更正确,因为它更优雅地处理后退按钮.当您将ViewState存储在隐藏变量中时,它将成为HTML的一部分,因此,如果用户单击后退按钮2或3页并继续他正在执行的操作,则可以使用它.盲目地将Viewstate与每个页面请求一起删除将阻止后退按钮按照用户期望的方式运行.
但是,首先要注意的是,这可能不是一个好主意.我建议先做至少两件事:
首先,确保已关闭所有不需要它的控件(可能是其中大部分控件)的Viewstate.您可以通过将"IsViewstateEnabled"设置为false来执行此操作.
其次,在您的网络服务器上打开http压缩.即使您有一个合理大小的视图状态,总页面权重(压缩后 - 不在浏览器中查看)应该相对较小.
希望有所帮助!