2011-01-26 35 views
5

Tôi có hai tuyến đường trong khu vực của tôi, một trong những tùy chỉnh và một tuyến đường dự phòng mặc định, xem dưới đâytuyến Register đăng ký khu vực

 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 
     ); 

khi tôi thêm cả tuyến đường sử dụng context.Routes.Add/MapRoute con đường cuối cùng là không làm việc, nhưng khi tôi sử dụng context.MapRoute trên tuyến đường cuối cùng nó hoạt động nhưng GetVirtualPath trong tuyến đường tùy chỉnh của tôi không được sử dụng cho các liên kết hành động. Tôi nghĩ rằng MapRoute chỉ là một phần mở rộng cho context.Routes.Add? Cách tốt nhất để gỡ lỗi các tuyến đường là gì? Tôi đã sử dụng Phil Haacks gỡ lỗi tuyến đường nhưng nó không hoạt động với tuyến đường tùy chỉnh của tôi, có cách nào khác để gỡ lỗi tuyến đường không?

Tôi thực sự cần trợ giúp ở đây. đăng ký tuyến đường của tôi trong khu vực bảng điều khiển của tôi trông như thế này -

 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 } 
     ); 

Các PageRoute là một lộ trình tùy chỉnh và bạn có thể tìm mã ở đây http://bit.ly/er6HPn Với các tuyến đường này hoạt động liên kết như thế này làm việc Html.ActionLink lớn ("Quản lý Vai trò "," người quản lý "," tài khoản ") nhưng khi tôi có liên kết nên hoạt động với tuyến đường tùy chỉnh của tôi như Html.ActionLink này (page.MetaData.Name," edit "," pages ", new {document = page} , null) kết quả là http://stormbreaker.local/dashboard/pages/edit?document=Stormbreaker.Example.Models.Page, điều này có nghĩa là GetVirtualPath trong PageRoute của tôi không bao giờ được sử dụng. Bất cứ ai có thể giải thích cho tôi cách và làm thế nào tôi có thể sửa lỗi này?

Trả lời

7

Giải quyết nó, Nếu bạn đăng ký tùy chỉnh RouteBase dụ trong đối tượng RouteCollection, giao diện IRouteWithArea cho phép bạn liên kết mà RouteBase dụ với diện tích

+0

này chỉ giải quyết một vấn đề tôi đã có - cảm ơn! – RPM1984

Các vấn đề liên quan