2011-11-23 73 views
3

我的路線在Global.asax中像這 -Html.actionlink不產生正確的URL

routes.MapRoute(
      "History", // Route name 
      "{controller}/{PageID}/{LanguageID}/{PreviousRevisionID}/{NewRevisionID}", // URL with parameters 
      new { controller = "UserArea", action = "Index", PageID = 0, LanguageID = 0, PreviousRevisionID = 0, NewRevisionID = 0} // Parameter defaults 
     ); 

我使用Html.actionLink使URL篩選。

@Html.ActionLink(item.CreatedTS.ToString(), "Index", new { PageID = item.PageID ,LanguageID = item.LanguageID , PreviousRevisionID = item.PreviousRevisionID , NewRevisionID = item.NewRevisionID , controller = "History" }); 

但是URL生成像這樣

http://localhost:2582/History?PageID=2&LanguageID=3&PreviousRevisionID=98&NewRevisionID=103 

但我想URL篩選

http://localhost:2582/History/2/3/98/103 

問題出在哪裏

回答

4

使用RouteLink,而不是ActionLink的:

​​

對於差異看到這個SO問題。

+0

嘿它工作感謝您的幫助 – user1006544

0

看來,你可以有你的路由定義以錯誤的順序。您希望在默認路線之前定義此路線。所以你的路線可能看起來像這樣。

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "History", // Route name 
      "{controller}/{PageID}/{LanguageID}/{PreviousRevisionID}/{NewRevisionID}", // URL with parameters 
      new { controller = "UserArea", action = "Index", PageID = 0, LanguageID = 0, PreviousRevisionID = 0, NewRevisionID = 0 } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Default", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
    } 

Phil Haack的路由調試工具對調試路由非常有幫助。

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

PM>安裝,包裝routedebugger

+0

我試過沒有工作 – user1006544

+0

我添加了一個鏈接到路由調試器。正確的路線被選中了嗎? – Justin