1

我们的客户有这样的要求:

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

现在我的问题部分:

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

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

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

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

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

4

3 回答 3

2

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

于 2012-05-15T12:31:40.937 回答
0

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

于 2012-05-15T16:54:54.517 回答
0

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

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

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

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

如果需要,如果将 div 的内部 html 设置为已保存页面上 body 标记的内部 html,则可以将 iFrame 替换为 div。

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

于 2012-05-15T17:22:43.693 回答