2010-04-26 116 views
0

当数据按表单条件过滤时,用于分页数据的最佳ASP.NET MVC模式是什么?MVC分页和排序模式:如何页面或排序重用表格标准

这个问题类似于:Preserve data in .net mvc但肯定有更好的答案?

目前,当我点击搜索按钮,这个动作被称为:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Search(MemberSearchForm formSp, int? pageIndex, string sortExpression) 
    {} 

,非常适合在表中的结果的初始显示。

但我想要页码链接或排序表达式链接重新发布当前表单数据(用户第一次输入 - 持久性因为它作为viewdata返回),以及额外的路由参数'pageIndex'或'sortExpression',

ActionLink或RouteLink(我将用于页码)是否可以将表单发布到它们指定的url?

<%= Html.RouteLink("page 2", "MemberSearch", new { pageIndex = 1 })%> 

目前他们只是做一个基本的重定向,不张贴表单值,所以搜索页面加载新鲜。

在常规的旧Web表单中,我用来在ViewState中保留搜索参数(MemberSearchForm),并让GridView分页或排序事件重用它。

回答

2

一个可能的解决方案是将JavaScript点击处理程序附加到将通过更新包含页码的隐藏字段来提交表单的分页器链接。这样您将获得控制器操作中的所有搜索条件。

另一种可能性是将这些寻呼机链接转换为提交按钮并将它们放置在表单中。

第三种可能性是使用Session来坚持搜索条件。

+0

去与第一种方法,它工作得很好。唯一的缺点是页面功能不能“优雅地降级”,因为它依赖于JS。下次尝试会话方式... – CRice 2010-04-29 07:55:09

2

您可以执行GET而不是POST。如果您的请求是要返回搜索结果,那么无论如何GET都可能更有意义。好处是所有的搜索字段都被编码到URL中。因此,当您执行一个页面或对现有URL进行排序时,您的数据将被保存。