【发布时间】:2010-04-09 21:14:26
【问题描述】:
这看起来应该很简单,但我显然很困惑。
我有一个显示分页列表的列表视图。在底部我有一组操作链接:
<%= Html.ActionLink("First Page", "List", new { page = 1} ) %>
<%= Html.ActionLink("Prev Page", "List", new { page = Model.PageNumber - 1 }) %>
<%= Html.ActionLink("Next Page", "List", new { page = Model.PageNumber + 1 }) %>
<%= Html.ActionLink("Last Page", "List", new { page = Model.LastPage } )%>
我使用的是基本的默认路由设置,除了用“列表”代替“索引”:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "List", id = UrlParameter.Optional } // Parameter defaults
);
问题在于 ActionLink 助手正在生成以下形式的链接:
http://localhost:2083/Retrofit?page=2
而不是
http://localhost:2083/Retrofit/?page=2
(在控制器名称之后和查询字符串之前带有斜杠)。当第一个 URL 被路由时,它完全丢失了查询字符串——如果我在它到达控制器时查看 Request.QueryString,它是空的。如果我输入第二个 URL(带有斜杠),它会正确输入(即“page=2”的 QueryString)。
那么我怎样才能让 ActionLink 帮助程序生成正确的 URL,或者让路由正确解析 ActionLink 正在生成的内容?
谢谢。
【问题讨论】:
标签: model-view-controller routing query-string