当前位置:  开发笔记 > 后端 > 正文

在SessionPageStatePersister中保持ViewState

如何解决《在SessionPageStatePersister中保持ViewState》经验,为你挑选了1个好方法。

我想在会话中保持特定页面的视图状态,但是下面的代码块对我没有帮助,我可能会缺少什么?

所以这是我的页面的代码隐藏文件内容;

    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压缩.即使您有一个合理大小的视图状态,总页面权重(压缩后 - 不在浏览器中查看)应该相对较小.

希望有所帮助!



1> tsimon..:

请注意,即使将页面状态移动到查看状态,您仍会在页面上看到__Viewstate元素.

此外,我相信这个解决方案可能比其他解决方案更正确,因为它更优雅地处理后退按钮.当您将ViewState存储在隐藏变量中时,它将成为HTML的一部分,因此,如果用户单击后退按钮2或3页并继续他正在执行的操作,则可以使用它.盲目地将Viewstate与每个页面请求一起删除将阻止后退按钮按照用户期望的方式运行.

但是,首先要注意的是,这可能不是一个好主意.我建议先做至少两件事:

首先,确保已关闭所有不需要它的控件(可能是其中大部分控件)的Viewstate.您可以通过将"IsViewstateEnabled"设置为false来执行此操作.

其次,在您的网络服务器上打开http压缩.即使您有一个合理大小的视图状态,总页面权重(压缩后 - 不在浏览器中查看)应该相对较小.

希望有所帮助!

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有