我有一些問題,我在ASP.NET MVC3應用路由,正是因爲我想它不工作。在Global.asax中如何解決我的MVC3路由
路由定義
routes.MapRoute(
"News", // Route name
"{lang}/{controller}/{action}/{page}/{id}", // URL with parameters
new { lang = "pl", controller = "News", action = "Index", page = 1, id = UrlParameter.Optional } // Parameter defaults
);
所以我想用它在2情況:
/{lang}/{controller}/{action}/{page}
- 轉到特定paginations頁面/{lang}/{controller}/{action}/{page}/{id}
- 記當前頁面,並轉到具有特定id
的頁面。
產生鏈接我用:
@Html.RouteLink(i.ToString(), "News", new { lang = ViewBag.Lang, page = i })
其中i
是頁面的數量,並且lang是語言。
在控制器我處理它巫行動:
public ViewResult Index(string lang, int page = 1)
問題
@Html.RouteLink
(當 '2' 是點擊的),但我的控制器不處理給我鏈接/pl/News/Index/2
它和頁面仍然是'1'。所以,當我點擊相同的鏈接兩次,它給:/pl/News/Index/2/2
,然後頁面等於'2'。
如果有人能解釋我如何準確工作,我能做些什麼來解決呢?
任何幫助,將不勝感激。
這是一些邪惡的途徑,但我在你的控制器中沒有看到'id'(這是可選的),不應該是'Index(string lang,int?id,int page = 1)'? :) –
你不仔細閱讀:)在索引操作中,我不使用'id'參數,我只需要在其他操作。 –
如果我理解正確,點擊'/ pl/News/Index/2',它會觸發正確的_Index_動作,但是此動作中_page_的值是1而不是2。是否還有其他路線可以匹配鏈接? –