【问题标题】:Is it possible to save and restore a complete aspx page?是否可以保存和恢复完整的 aspx 页面?
【发布时间】:2012-05-15 12:23:18
【问题描述】:

我们的客户有这个要求:

  • 当用户单击表单上的搜索图标时,搜索页面应显示在模式对话框 (iframe) 中
  • 用户可以搜索、浏览他的搜索结果并选择一条记录
  • 现在模态对话框隐藏,用户查看记录
  • 当用户再次点击搜索图标时,模态对话框再次出现

现在是我的问题部分:

  • 当用户离开当前页面并在几分钟后返回该页面并再次按搜索图标继续搜索时,他应该会看到与之前离开的页面相同的页面。

我更喜欢只保存整个页面并在用户想要再次查看搜索页面时恢复它。但我不知道这是否可能..

我并不想保存所有的搜索过滤器,当用户进入搜索页面时再次搜索,因为搜索过滤器有> 100个,搜索也可能需要一段时间。

客户的硬性要求是他应该能够继续进行搜索,并且每次再次进入搜索页面时都不应重新开始。

感谢您对此提出的所有建议。

【问题讨论】:

  • 这不是浏览器后退按钮应该做的吗?我建议您让表单执行 GET 并使用 LesterDove 的建议。
  • 我不觉得你理解我的问题。这个想法是:当用户点击一个搜索图标时,他会得到一个带有搜索页面的模式对话框。当他在搜索结果中选择一条记录时,模式对话框关闭并且用户查看该记录。当用户再次单击搜索图标时,会再次显示模态对话框。当用户转到另一个页面并返回这里时,他希望在单击查看按钮时看到相同的搜索页面。这与往复无关。

标签: c# asp.net .net iframe


【解决方案1】:

听起来你可以使用 .NET 的 @OutputCache 页面声明和 VaryByParam 属性集(如果搜索参数至少通过查询字符串传递。)

【讨论】:

  • 思路相同,但建议将此功能包装在用户控件中,这样如果页面中的任何用户特定信息都不会被缓存并显示给其他用户。
  • 嗯,我没有查询字符串参数。模态对话框是一个搜索表单,有很多过滤器供用户设置(对于查询字符串来说也太多了),并且该表单还显示搜索结果。当用户从搜索结果中选择一条记录时,模式对话框将隐藏并显示该记录。当用户再次点击搜索图标时,模态对话框再次出现。
  • 另外,它没有缓存问题。当用户打开模态对话框进行搜索时,我想手动将页面恢复到上次离开时​​的状态。
  • 我明白了。您可以尝试使用 ViewState 一口气恢复所有这些搜索控件的状态。
【解决方案2】:

我会想出某种自定义缓存机制来将搜索结果存储在服务器上。当用户提交搜索时,结果会存储在缓存中,并且会向页面返回一个键。然后当用户单击按钮重新查看结果时,使用密钥从服务器检索结果。

【讨论】:

    【解决方案3】:

    为什么不将搜索结果保存到会话或视图状态变量中?

    如果我处于你的位置(并且无法将搜索结果保存到会话变量中),我会:

    1. 使模态对话框成为自己的页面。
    2. 服务器上的Download the page(服务器连接到模态对话框页面并下载内容)。
    3. 将下载的页面存储在某处(可能是会话,也可能是数据库或文件系统)。
    4. 在模态对话框中添加iFrame(确保添加名称字段,否则在 FF 中将不起作用)。
    5. 将模态对话框中 iFrame 的来源设置为已保存的搜索结果。

    需要注意的是,如果搜索结果使用服务器端、浏览器相关的控件(根据服务器指示的浏览器类型返回不同 HTML 的控件),此解决方案将出现问题。

    如果你愿意,如果你将div的内部html设置为保存页面的body标签的内部html,iFrame可以替换为div。

    我相信 ASP 中还有一个内置功能可以获取页面的渲染文本,但我不记得它叫什么了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 2013-11-11
      • 2011-03-27
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多