【问题标题】:Retaining parameters in ASP.NET MVC在 ASP.NET MVC 中保留参数
【发布时间】:2010-06-10 17:21:15
【问题描述】:

许多 MVC 框架(例如 PHP 的 Zend 框架)都有一种通过 URL 提供基本状态管理的方法。基本原理是这样的:

任何未明确修改或取消设置的参数都会被复制到每个 URL 中

例如,考虑一个带有分页的列表。您将获得作为 URL 参数传递的顺序、方向和页码。您可能还有几个过滤器。更改过滤器的值不应改变排序顺序。

默认情况下,ASP.net MVC 似乎会记住您的控制器和操作:

<%: Html.RouteLink("Next", "MyRoute", new {id = next.ItemId}) %>

这不会重新设置您的操作或控制器。但是,它似乎确实忘记了所有其他参数。 ActionLink 也是如此。

之前在您的 URL 中设置的参数似乎也被保留了。

有没有办法让它保留更多?

例如,这似乎不会影响正在生成的任何链接:

RouteData.Values["showDeleted"] = true;

【问题讨论】:

  • 你能发布一个你想要创建的 URL 示例吗?
  • /Items/List?showDeleted=1&order=FirstName&direction=ASC /Items/Details/1? showDeleted=1&order=FirstName&direction=ASC /Items/Delete/1?showDeleted=1&order=FirstName&direction=ASC

标签: c# .net asp.net-mvc routing


【解决方案1】:

记住分页和排序参数的最简单的解决方案是让客户端工具(如 jqGrid)为您进行管理。

ActionLink 不会记住参数,因为这不是它的工作。它旨在提供指向另一个页面的链接(完全独立于您当前所在的页面)。

根据您共享的链接,您似乎希望在转到另一个页面然后返回列表时记住过滤参数。在我的应用程序中,我实现了弹出模式来处理命令,将 jqGrid 留在后台。另一种解决方案是在会话中保留过滤参数,但如果用户打开同一页面的两个副本,这可能会导致行为混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2010-11-28
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2010-10-07
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多