2011-01-26 108 views
5

我在我區兩條路線,一個自定義的和一個默認的備用路線,請參見下面註冊路線

 var dashboardRoute = new DashboardRoute(
      ObjectFactory.GetInstance<PathResolver>(), 
      ObjectFactory.GetInstance<VirtualPathResolver>(), 
      null); 
     context.Routes.Add(dashboardRoute); 

     context.Routes.MapRoute(
      "Dashboard_Default", // Route name 
      "dashboard/{controller}/{action}/{id}", // URL with parameters 
      new { controller = "pages", action = "index", id = UrlParameter.Optional, area = "Dashboard" } // Parameter defaults 
     ); 

當我添加使用context.Routes.Add /圖路線的最後的路線是兩條路線不工作,但是當我在最後一個路由上使用context.MapRoute時,它的工作原理是,但我的自定義路由中的GetVirtualPath不用於actionlinks。我認爲MapRoute只是context.Routes.Add的擴展。調試路由的最佳方法是什麼?我已經使用Phil Haacks路由調試,但它不適用於我的自定義路由,有沒有其他方式來調試路由?

我真的需要一些幫助。在我的儀表板區域 我的路線註冊看起來像這樣 -

 var dashboardRoute = new PagesRoute(
      ObjectFactory.GetInstance<PathResolver>(), 
      ObjectFactory.GetInstance<VirtualPathResolver>(), 
      null); 
     context.Routes.Add("Dashboard", dashboardRoute); 

     context.MapRoute(
      "Dashboard_default", 
      "dashboard/{controller}/{action}/{id}", 
      new { controller = "dashboard", action = "index", id = UrlParameter.Optional } 
     ); 

的PageRoute是一個定製的路線,你可以在這裏找到代碼http://bit.ly/er6HPn 通過這種途徑活躍像這樣的鏈接的偉大工程Html.ActionLink(「管理角色「,」管理員「,」帳戶「),但是當我有一個鏈接,應該像我這樣的Html.ActionLink(page.MetaData.Name,」edit「,」pages「,new {document = page} ,null)結果是http://stormbreaker.local/dashboard/pages/edit?document=Stormbreaker.Example.Models.Page,這意味着我的PageRoute中的GetVirtualPath永遠不會被使用。任何人都可以向我解釋方式,我怎麼能解決這個問題?

回答

7

解決了這個問題,如果你註冊自定義在RouteCollection對象RouteBase例如,IRouteWithArea界面讓你聯想與區域RouteBase實例

+0

這正好解決了我有一個問題 - 謝謝! – RPM1984 2012-01-24 03:12:44