2013-01-18 93 views
0

我已經看到Paging and routing in ASP.Net MVC但我無法爲我工作。MVC中的漂亮頁面路由

在我的主頁我想爲我的傳呼下列漂亮網址:

http://mysite 
http://mysite/2 
http://mysite/3 

有無路由尋呼機生成的默認網址如下:

http://mysite/?page=1 
http://mysite/?page=2 
http://mysite/?page=3 

我RouteCollection迄今爲:

public static void RegisterRoutes(RouteCollection routes) 
{ 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute(
    "HomePaging", 
    "{page}", 
    new { controller = "Home", action = "Index" }, 
    new { page = @"\d+" }, 
    new[] { "MySite.Controllers" }); 

routes.MapRoute(
    "HomePagingFirst", 
    "{controller}", 
    new { controller = "Home", action = "Index", page = 1 }, 
    new[] { "MySite.Controllers" }); 

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new[] { "MySite.Controllers" }); 

} 

這產生以下路線:

http://mysite/1 
http://mysite/2 
http://mysite/3 

這不僅產生一個用於第一頁的非規範的路線,但它也造成類似下面@Html.ActionLink("my site", "Index", "Home")產生與當前頁的頁號被追加的所有鏈接。

任何想法如何做到這一點?如果可以的話,一個簡短的解釋和答案將是最受歡迎的。

+0

如果在你的'HomePaging'route你改變什麼'新{控制器= 「家」,行動= 「索引」}''到新{控制器= 「家」,行動= 「索引」,頁= UrlParameter.Optional}'? – cheesemacfly

+0

也許actionLink像這樣@ Html.ActionLink(「my site」,「index」,「Home」,new {page = page}); – Stiger

+0

感謝您的建議。我終於搞定了,但我仍然沒有真正掌握規則。 –

回答

0

我最終得到了這樣的工作。但是,通過試驗和錯誤,所有的誠實。如果有人能夠解釋爲什麼它有效,我相信這對遊客很有幫助。

routes.MapRouteLowercase(
    "HomePaging", 
    "{controller}", 
    new { controller = "Home", action = "Index", page = UrlParameter.Optional }, 
    new { page = @"\d+" }, 
    new[] { "MySite.Controllers" }); 

routes.MapRouteLowercase(
    "HomeFirstPage", // Route name 
    "{page}", // URL with parameters 
    new { controller = "Home", action = "Index", page = 1 }, 
    new { page = @"\d+" }, 
    new[] { "MySite.Controllers" });