许多MVC框架(例如PHP的Zend Framework)都有一种通过URL提供基本状态管理的方法。基本原则是:
任何未明确修改或未设置的参数都会被复制到每个网址
例如,考虑一个带分页的列表。您将订单,方向和页码作为URL参数传递。您可能还有几个过滤器。更改过滤器的值不应改变排序顺序。
ASP.net MVC似乎默认记住你的控制器和动作:
<%: Html.RouteLink("Next", "MyRoute", new {id = next.ItemId}) %>
这不会重新设置您的操作或控制器。但是,它似乎忘记了所有其他参数。 ActionLink也是如此。
您之前在网址中设置的参数似乎也会被保留。
有没有办法让它保留更多?
例如,这似乎不会影响正在生成的任何链接:
RouteData.Values["showDeleted"] = true;
答案 0 :(得分:0)
记住分页和排序参数的最简单方法是让客户端工具(如jqGrid)为您进行管理。
ActionLink不会记住参数,因为这不是它的工作。它旨在提供一个链接(完全独立于您当前所在的页面)到另一个页面。
根据您分享的链接,看起来您想要在转到另一个页面然后返回列表时记住过滤参数。在我的应用程序中,我实现了弹出模式来处理命令,将jqGrid留在后台。另一种解决方案是在会话中保留过滤参数,但如果用户打开同一页面的两个副本,则可能导致混淆行为。