MVC4.0 解决Controllers与Areas中控制器不能同名问题

在使用MVC4.0的时候,难免会遇到在根目录下的Controllers中添加的控制器名称可能会跟在Areas中的某个区域下的控制器名称一样。这个时候访问Areas下面的Controller/Action是没有问题的,但是访问根目录下的地址是就会提示:

找到多个与名为“Home”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”) 提供服务的路由在搜索匹配此请求的控制器时没有指定命名空间,则会发生此情况。如果是这样,请通过调用含有 'namespaces' 参数的 'MapRoute' 方法的重载来注册此路由。

根据错误提示,我们需要在默认路由中定义“namespaces”参数的值

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                namespaces: new string[] { "XXXX.WebUI.Controllers" }//解决Controllers与Areas中控制器不能同名问题
            );

 至此就可以访问根目录下的地址了!

posted @ 2015-10-17 11:51  荒古禁地  阅读(1254)  评论(0编辑  收藏  举报