如何在非回发,非跨页回发场景中保存和恢复会话页面视图状态?

时间:2012-01-24 14:44:22

标签: asp.net viewstate state webforms

目前我通过重新查询数据库以填充网格来恢复状态,但页面加载速度太慢。相反,我想在会话变量中保存viewstate,并在用户重新访问页面时将其恢复。这是怎么做到的?我应该使用SessionPageStatePersister吗?这不是回发情况,甚至不是跨页回发。

背景:我使用VS 2010 ASP.Net Web应用程序模板,其中包含母版页和多个标签页内容页。导航到新选项卡时状态丢失。 “我的客户”选项卡允许用户从AspxGridView中筛选和选择一个客户。所选客户ID存储在会话变量中,用于在其他选项卡上显示相关客户数据:联系人,发票,任务等。我可以使用SaveClientLayout保存和恢复客户网格过滤器,排序和布局。但我不知道如何在不重新查询数据库的情况下恢复网格数据。

我找到this tutorial并在标题为SessionPageStatePersister的部分中实现了代码。我复制了代码并创建了SessionPageStateAdapter和.browser文件。我对如何访问此会话视图状态数据感到困惑。我需要帮助如何保存视图状态并在用户访问过多个其他页面后将其恢复?

1 个答案:

答案 0 :(得分:0)

Viewstate是管理会话状态的客户端方式。

它在html渲染页面中注入代码。

因此,当用户关闭时,浏览器状态不会持久存在。

如果你想在浏览器会话中保存状态,你有两种方法:

  • 继续将其存储在数据库中 如果您遇到性能问题,请考虑使用ASP.NET缓存

  • 将您的信息存储在Cookie中。

相关问题