2011-01-26 18 views
5

tengo dos rutas en mi área, una costumbre y una ruta de reserva predeterminado, véase más adelanterutas Registro en el registro zona

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

cuando agrego las dos rutas que utilizan context.Routes.Add/MapRoute la última ruta es no funciona, pero cuando uso context.MapRoute en la última ruta funciona, pero GetVirtualPath en mi ruta personalizada no se usa para enlaces de acción. Pensé que MapRoute era solo una extensión de context.Routes.Add? ¿Cuál es la mejor manera de depurar rutas? He utilizado la depuración de ruta Phil Haacks pero no funciona con mi ruta personalizada, ¿hay alguna otra forma de depurar rutas?

Realmente necesito ayuda aquí. mi ruta registros en mi área del tablero se parece a esto -

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

El PageRoute es una ruta personalizada y se puede encontrar el código aquí http://bit.ly/er6HPn Con este rutas activa un enlace como este funciona muy bien Html.ActionLink ("Administrar Roles "," manageroles "," cuenta ") pero cuando tengo un enlace que debería funcionar con mi ruta personalizada como esta Html.ActionLink (page.MetaData.Name," edit "," pages ", new {document = page} , null) el resultado es http://stormbreaker.local/dashboard/pages/edit?document=Stormbreaker.Example.Models.Page, esto significa que GetVirtualPath en mi PageRoute nunca se usa. ¿Alguien puede explicarme cómo y cómo puedo arreglar esto?

Respuesta

7

lo resolvió, Si se registra una costumbre RouteBase instancia en el objeto RouteCollection, IRouteWithArea interfaz le permite asociar esa instancia RouteBase con una superficie

+0

Esto se resolvió un problema que tenía - gracias! – RPM1984