【问题标题】:MVC Paging and Sorting Patterns: How to Page or Sort Re-Using Form CriteriaMVC 分页和排序模式:如何重用表单标准进行分页或排序
【发布时间】:2010-05-09 03:06:55
【问题描述】:

当按表单条件过滤数据时,对数据进行分页的最佳 ASP.NET MVC 模式是什么?

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

目前,当我单击搜索按钮时,会调用此操作:

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

这非常适合在表格中初始显示结果。

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

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc sorting persistence paging


    【解决方案1】:

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

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

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

    【讨论】:

    • 采用第一种方法,效果很好。唯一的缺点是页面功能不会“优雅地降级”,因为它依赖于 JS。下次会尝试会话方式...
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 2015-12-18
      • 2015-11-18
      • 2011-04-25
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多