我有一种情况,我无法通过我在这里的搜索找到解决方案。这是场景:
我有一个包含2个必填字段和多个可选字段的搜索表单。表单发布到一个操作方法,该方法确定选择哪些字段并构建List<>符合搜索条件的对象。然后我传递了List<>到视图显示。
我遇到的这个问题涉及如何使用asp.net mvc进行分页。对于过去的项目,我使用了一个自定义的Html帮助程序来创建包含查询参数和“页面”参数的链接。然后它使用GET请求和.Take()。Skip()格式。
我在这个项目上遇到了障碍,因为我无法使用GET请求获取搜索条件,我无法想出一种方法来保持List<>在内存中做通常的“页面”参数技巧。
我考虑过存储List<>在会话中但对象和列表可能非常大。
我认为这是高级搜索表单的一个热门问题,但我似乎无法找到一个好的解决方案。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:4)
如何缓存搜索结果对象并为其提供唯一键。然后,您可以将您的分页链接引用为唯一(SearchID)并让您的操作查找该对象,从缓存中提取它并从那里跳过/获取。
这不会为每个请求重建对象,使页面加载速度更快,并减少数据库/应用程序的压力。
这是一篇关于缓存的文章:
http://aspnet.4guysfromrolla.com/articles/100902-1.aspx
以下是有关缓存的视频:
http://www.asp.net/learn/Videos/video-6206.aspx
注意:请确保在缓存的对象上指定过期日期。
答案 1 :(得分:2)
如果我理解正确,您只想加载搜索结果一次,然后翻阅它们。
您是否研究过任何jQuery分页功能?您可以将整个列表转储到页面,并使用JavaScript来处理分页(如果您愿意,还可以进行排序)。
可以在http://beckelman.net/demos/jqueryTableSorterConPaging/default.aspx
找到一个示例答案 2 :(得分:1)
将所有内容放在相同的表单中:必填字段,可选字段和页面链接。
两种可能性:
page1
,page2
,...):这样您就可以获得所需的页面了表格已提交。因此,点击任何寻呼机链接将提交表格,其中包含构建列表和寻呼机链接所需的所有数据。