這似乎應該是非常簡單,但我顯然困惑。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