Mar*_*cus 5 asp.net-mvc-routing asp.net-mvc-3
我的区域有两条路线,一条是自定义路线,一条是默认后备路线,见下文
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
);
Run Code Online (Sandbox Code Playgroud)
当我使用context.Routes.Add/MapRoute添加两个路由时,最后一个路由不起作用,但是当我在最后一个路由上使用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 }
);
Run Code Online (Sandbox Code Playgroud)
PageRoute是一个自定义路线,你可以在这里找到代码http://bit.ly/er6HPn 这条路线有效,这样的链接很好用Html.ActionLink("管理角色","manageroles","帐户")但是当我有一个应该使用我的自定义路由的链接,如Html.ActionLink(page.MetaData.Name,"edit","pages",new {document = page},null)时,结果为http:// stormbreaker. local/dashboard/pages/edit?document = Stormbreaker.Example.Models.Page,这意味着我的PageRoute中的GetVirtualPath从未被使用过.任何人都可以向我解释方式以及如何解决这个问题?