保留ASP.NET MVC中的参数

时间:2010-06-10 17:21:15

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

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

任何未明确修改或未设置的参数都会被复制到每个网址

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

ASP.net MVC似乎默认记住你的控制器和动作:

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

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

您之前在网址中设置的参数似乎也会被保留。

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

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

RouteData.Values["showDeleted"] = true;

1 个答案:

答案 0 :(得分:0)

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

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

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