2011-01-26 12 views
5

Ho due percorsi nella mia zona, un costume e una via di ripiego di default, vedi sottopercorsi registrarsi in registrazione 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 
     ); 

quando aggiungo entrambi i percorsi utilizzando context.Routes.Add/rottaMappa l'ultimo percorso è non funziona, ma quando uso context.MapRoute sull'ultimo percorso funziona, ma GetVirtualPath nella mia rotta personalizzata non viene utilizzato per i link di azione. Pensavo che MapRoute fosse solo un'estensione del contesto.Routes.Add? Qual è il modo migliore per eseguire il debug di percorsi? Ho usato il debug di route Phil Haacks ma non funziona con il mio percorso personalizzato, esiste un altro modo per eseguire il debug di percorsi?

Ho davvero bisogno di aiuto qui. mio percorso registrazioni nella mia zona del cruscotto sembra questo -

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

Il PageRoute è un itinerario personalizzato e si può trovare il codice qui http://bit.ly/er6HPn Con questo percorsi attiva un link come questo funziona alla grande Html.ActionLink ("Gestione Ruoli "," manageroli "," account ") ma quando ho un collegamento che dovrebbe funzionare con il mio percorso personalizzato come questo Html.ActionLink (page.MetaData.Name," edit "," pages ", new {document = page} , null) il risultato è http://stormbreaker.local/dashboard/pages/edit?document=Stormbreaker.Example.Models.Page, questo significa che GetVirtualPath nel mio PageRoute non viene mai utilizzato. Qualcuno può spiegarmi in che modo e come posso risolvere questo problema?

risposta

7

risolto, se si registra un costume RouteBase istanza nell'oggetto RouteCollection, IRouteWithArea interfaccia consente di associare l'istanza RouteBase con una superficie

+0

Questo solo ha risolto un problema che ho avuto - grazie! – RPM1984