使用ASP.NET存储以前的搜索条件

时间:2012-09-11 09:36:43

标签: c# asp.net web-applications

我创建了一个返回产品列表的Web应用程序。在此页面上,它允许用户搜索一系列不同的搜索条件。

用户搜索并将结果返回到页面上的表格后,用户就可以编辑产品。但是,在返回产品列表页面后,页面会重新加载,并再次显示所有产品。

我想知道保留搜索结果的最佳方法是什么,并在返回搜索页面时保留以前的标准。

我在堆栈交换上发现了一些帖子 - Best way to store previous search criteria in ASP.NET - 可能是最好的之一。

是否有人知道如何保持搜索条件,因此当用户返回搜索页面时,之前的搜索条件和结果保持不变。

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您的整个搜索都可以通过查询字符串表示,那么将该查询字符串(或搜索条件)存储在cookie中是完全合理的。假设当然打开了cookie。

当用户导航到搜索页面时,您可以从cookie中读取查询字符串并返回相关结果。

客户端状态是高负载系统的一个好方法。如果您有数百个并发用户,则不希望在服务器上存储状态。

修改

好的,假设您决定将结果存储在会话中。有什么问题?您的结果可能不再适用。底层数据存储中可能会发生某些变化,最终会显示不准确的数据。

假设您最终在内存中存储了相当大的结果集 - 每个用户100kb。假设您有两百个并发用户,那么您已经在查看至少100kb * 200.这不到20MB的存储空间,不包括您可能存储在会话中的其他数据。随着系统的发展,规模化将变得昂贵。

另一方面,如果您在客户端上存储搜索条件,则可以轻松扩展到数千个用户。您所要做的就是从cookie中检索其搜索条件并重新执行它。

我个人会寻找将数据存储在会话状态的一个很好的理由。即存储用户敏感数据。

关于this question - 是的它会起作用,但正如我已经说过的,如果您决定将结果存储在服务器上,它将无法很好地扩展。此外,在重新启动应用程序池或重新启动IIS的情况下,您将失去搜索条件。