MVC中添加Area后路由默认导航优先级的处理

先决条件

1.项目中添加一个Admin的Area

2.Admin下的Controller添加Home

3.默认的Controller中也有Home

出现的问题

1.输入Url根目录无法导航到正确的Home

2.输入Admin的Url也无法导航

解决方案

修改App_Start目录下的RouteConfig文件

routes.MapRoute(
                 "Default",
                 "{controller}/{action}/{id}",
                 new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                ,
                  new[] { "WebMonitor.Web.Controllers" } //指定命名空间
            );

  

  其中WebMonitor.Web是项目名,很多人的blog中都不提这一点,不知道是为什么。

这时AdminAreaRegistration的内容没有动,

此时访问根目录可以正确导航,但是方位admin时需要在Url后添加 /Home,类似:XXX/Admin/Home才可正确导航。

如何在我们输入XXX/Admin可以正确导航到XXX/Admin/Home?

这时就需要修改AdminAreaRegistration文件

public override void RegisterArea(AreaRegistrationContext context) 
        {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }               
            );
        }

  默认添加的文件中没有 controller = "Home",需要添加后,定义了默认值才能实现如上所述功能。

 

posted @ 2016-05-05 10:53  Vevi  阅读(319)  评论(0编辑  收藏  举报