我很努力地在MVC3中繞過路由。MVC3不同參數類型的路由
以前我一般只是迴避整個區域,並堅持與醜陋的舊?id=1&foo=bar
類型的網址。不太好。
我有4個路由定義正是如此
routes.MapRoute("Blog", "{controller}/{action}/{PageNumber}/{PostsPerPage}", new { controller = "blog", action = "list", PageNumber = UrlParameter.Optional, PostsPerPage = UrlParameter.Optional });
routes.MapRoute("Code", "{controller}/{action}/{title}", new { });
routes.MapRoute("Id", "{controller}/{action}/{id}", new { });
routes.MapRoute("Default", "{controller}/{action}", new { controller = "home", action = "index" });
我試圖將它們順序從最具體到最不。
第一個'博客'路線工作正常,我可以使用一個URL,如/blog/list/2/5
,它正確映射到我的控制器。
底部的默認路由也按我的預期工作。
但是如果我有行動的方法是這樣的:
public ActionResult BarX(int id)
{
//some stuff
}
public ActionResult BarY(string title)
{
//some stuff
}
我希望它使用第三路線和產生的URL像/foo/barX/3
。
然而,如果我用
@Html.ActionLink("TEST1", "barX", "foo", new { id = 3 }, null)
生成的URL是
/foo/barx?id=3
爲
@Html.ActionLink("TEST2", "barY", "foo", new { title = "test" }, null)
同樣生成的URL是
/foo/bary?title=test
所以我想我的問題是:爲什麼他們生成舊的?id=
語法的URL而不是/foo/barx/3
?
「您的所有路線基本相同。」 +1 - 釘在頭上。 – 2013-03-25 01:00:54