这似乎应该是非常简单,但我显然困惑。MVC Html.ActionLink没有正确传递查询字符串
我有一个列表视图,显示一个分页列表。在底部,我有一组actionlinks的:
<%= 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正在生成的内容?
谢谢。
托马斯 这确实这样做将它添加到routeValues参数。它现在生成一个链接“http:// localhost:2083/Retrofit/List/1。 但是,那不是我想要的。我想要的是将页码生成为查询字符串:”http :// localhost:2803/Retrofit /?page =“。我需要在URL的路径中给出一个可选的id(用于查看/编辑项目的详细信息),以及作为查询给出的可选页码字符串,我该怎么做? –
2010-04-12 16:28:52