【发布时间】:2012-01-02 08:31:35
【问题描述】:
这可能有一个简单的答案,但我只是看不到它 b/c 我离项目太近了 - 就这样吧。
我有一个 asp.net 2.0 搜索应用程序。它是一系列以搜索表单开始并以显示给用户的结果结束的页面。在搜索和结果页面之间是一个过滤器页面,它显示了一系列过滤器,用户可以将搜索结果向下过滤到。我在搜索页面上执行初始搜索并将结果存储在会话中。如果初始搜索结果的总数超过一定数量(为了示例,我们假设为 50),则用户将被带到过滤器页面。在那里,他们会看到一些可以应用于结果的过滤器。
将所选过滤器应用于搜索结果后,如果计数仍超过 50 个,则它们会留在页面上,而只有未选择的过滤器仍会显示在页面上。如果计数小于 50,则将它们带到结果页面。现在,如果他们在过滤器页面上但希望查看结果,则有一个按钮可以获取结果的当前状态并将用户带到结果页面。
这是我的问题 - 如果我在应用一些过滤器后在结果页面上并单击后退按钮(没有页面缓存),我怎样才能获得以前的搜索状态在应用我选择的任何过滤器之前的结果?更进一步,如果我在一系列说 4 个“应用过滤器”之后进入结果页面(应用过滤器 - 仍然超过 50,应用其他过滤器 - 仍然超过 50,应用另一个过滤器 - 仍然超过 50,最后应用另一个过滤器- 是的!50 岁以下进入结果页面),如果我一直按返回按钮,如何从会话中获取每个版本的不断缩小的搜索结果?
对不起,如果这有点奇怪而且不太容易理解 - 这是一个不够简单的问题,不能用几个简单的句子来概括。
我最渴望任何想法(与手头的问题有关)或问题。
更新 - 仅供参考,我没有决定多页设计。一项要求表明它遵循现有第三方搜索应用程序的流程(逆向工程非常棒,对吧?)。
谢谢
【问题讨论】:
-
也许您应该将搜索和过滤信息保留在 url 而不是会话状态中。我已经在搜索应用程序上工作了几年,我希望我先走这条路。想想书签,如果用户将结果页面添加为书签,如果他明天可以从书签中获取结果,那对他来说会很好。如果您将搜索参数存储在会话状态中,则不能这样做。
-
我假设这是 Web 表单,而您正在将项目放入会话中。你能发布一些代码。您是否可以在模式弹出窗口中进行一些改进以避免从一个页面到另一个页面?
-
很遗憾,出于安全原因,我无法发布任何代码。
标签: asp.net search session-state back