Asp.net mvc 3 在区域注册中注册路线

Asp.net mvc 3 在区域注册中注册路线,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc 3,Asp.net Mvc Routing,我所在区域有两条路线,一条是自定义路线,另一条是默认备用路线,请参见下文 var dashboardRoute = new DashboardRoute( ObjectFactory.GetInstance<PathResolver>(), ObjectFactory.GetInstance<VirtualPathResolver>(), null); context.

我所在区域有两条路线,一条是自定义路线,另一条是默认备用路线,请参见下文

        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
        );
var dashboardRoute=新的dashboardRoute(
ObjectFactory.GetInstance(),
ObjectFactory.GetInstance(),
无效);
context.Routes.Add(仪表板路由);
context.Routes.MapRoute(
“Dashboard_Default”,//路由名称
“dashboard/{controller}/{action}/{id}”,//带参数的URL
新建{controller=“pages”,action=“index”,id=UrlParameter.Optional,area=“Dashboard”}//参数默认值
);
当我使用context.routes.add/MapRoute添加两个路由时,最后一个路由不起作用,但当我在最后一个路由上使用context.MapRoute时,它起作用,但自定义路由中的GetVirtualPath不用于ActionLink。我以为MapRoute只是context.Routes.Add的扩展?调试路由的最佳方法是什么?我使用了route debug,但它不适用于我的自定义路由,是否有其他方法来调试路由

我真的需要一些帮助。 我的仪表板区域中的路线注册如下所示-

        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 }
        );
var dashboardRoute=新页面路由(
ObjectFactory.GetInstance(),
ObjectFactory.GetInstance(),
无效);
添加(“仪表板”,仪表板路线);
context.MapRoute(
“仪表板默认值”,
“仪表板/{controller}/{action}/{id}”,
新建{controller=“dashboard”,action=“index”,id=UrlParameter.Optional}
);
PageRoute是一个自定义路由,您可以在这里找到代码
当这个路由处于活动状态时,像这样的链接工作得很好Html.ActionLink(“管理角色”、“管理角色”、“帐户”),但是当我有一个链接应该与我的自定义路由工作时,比如Html.ActionLink(page.MetaData.Name,“edit”,“pages”,new{document=page},null),结果是,这意味着我的PageRoute中的GetVirtualPath永远不会被使用。有人能给我解释一下解决这个问题的方法和方法吗?

解决了这个问题,如果您在RouteCollection对象中注册了一个自定义RouteBase实例,接口允许您将该RouteBase实例与一个区域相关联