【问题标题】:ASP MVC storing page states for later restoringASP MVC 存储页面状态以供以后恢复
【发布时间】:2009-11-01 06:14:24
【问题描述】:

我有一组相当复杂的 ASP MVC 控件,用于设置数据过滤器(帐户 ID 范围、成本范围、运营商、日期等)。这也创建了一个具有标准结果集类型对象的数据表对象。

用户可能想离开页面然后回来。我想恢复之前的过滤器控制状态,同时拉取当前的结果集。

存储用户会话状态的标准 ASP MVC 方法是什么?我确实可以访问 SQLServer 数据库。一种想法是将过滤视图对象和当前结果存储在缓存中。

我不需要恢复会话访问之间的状态(他们关闭浏览器并在其他时间返回。)

【问题讨论】:

    标签: asp.net-mvc controls states


    【解决方案1】:

    存储会话状态是正确的关键词。

    http://msdn.microsoft.com/en-us/library/ms972429.aspx

    http://www.devarticles.com/c/a/ASP/Maintaining-Session-State-With-ASP/

    您需要简单地获取会话状态变量并以某种方式存储它,然后以某种方式检索它。这可能需要做很多工作,并且可能有一种内置的方式来实现它,因为您那里有一个 MS SQL Server。但我不知道如何连接这些东西,所以我会将会话对象写入连接到数据库的对象流。您可以稍后查询。

    编辑: 另一方面,既然你说你不需要在访问之间恢复它,也许你只是想让这个的租约期限比它长很多。听起来他们正在超时?告诉它再挂上几个小时的连接。除非他们关闭页面,否则如果浏览器删除了 cookie,他们将在前面重新登录。

    【讨论】:

    • 我试图留在 MVC ASP 模型中,只是好奇最佳实践是什么。看起来虽然我们已经减少了视图状态和其他状态,但我们仍然需要依赖会话/cookie 来保持状态。我想我会根据他们的帐户 ID 将他们的过滤器转储到数据库中,并将结果集转储到缓存中。如果缓存删除了结果集,我将使用他们最后的过滤器设置重新查询。
    • 我最终选择了一个存储库模式类,该类将会话的使用隔离开来存储页面视图状态。
    【解决方案2】:

    我相信您只想保留过滤器值而不是查询结果,对吗?如果是这样,您可能希望将它们保存到字符串并将它们保存在 cookie 中。您也可以使用 asp 会话。会话存在一些可扩展性缺陷,但它通常是最简单的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多