asp.net mvc区域和主站点w /相同的控制器名称

时间:2012-08-30 16:04:58

标签: c# asp.net-mvc asp.net-mvc-routing

我已经创建了我的主要前​​端站点。我添加了我的区域并在后端开始工作。除了困扰我的一件事之外,这两个部分都进展顺利。

我希望在这两个区域都有一个Home控制器,但是得到的错误是我不能有一个。我已经按照一些教程没有运气。 Here是我尝试的最后一个。

我已经启动了一个新项目,仅用于测试,这是我的注册路由代码:

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
            "Default", // Route name 
            "{controller}/{action}/{id}", // URL with parameters 
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },// Parameter defaults 
            new String[] { "Test.Controllers" }
    );
}

我已将此代码放在我的Global.asax.cs文件中?这似乎没有任何帮助。这是我的实际错误:

'Home'的请求找到了以下匹配的控制器: Test.Areas.Portal.Controllers.HomeController Test.Controllers.HomeController

任何提示或指示都会很棒!我已经解决了这里提出的其他问题,但是他们都说我要做的就是添加我上面做的功能。


控制器路径:
Areas - Portal - Controllers - HomeController.cs
Controllers - HomeController.cs

2 个答案:

答案 0 :(得分:4)

尝试在IgnoreRoute行

之后立即插入以下内容
AreaRegistration.RegisterAllAreas();

编辑:

我尝试创建一个新项目并添加一个带有Home控制器的新区域。只需运行应用程序,我就可以重现您的错误。

进行相同的代码更改,解决了这个问题。

我建议右键单击系统托盘中的ASP.NET Development服务器图标,然后单击Exit,然后尝试重新运行该应用程序。

如果这不能解决问题,请仔细检查您在RegisterRoutes方法中指定的命名空间是否与默认控制器的完整命名空间完全匹配。

答案 1 :(得分:0)

我认为您需要比默认值高一MapRoute

routes.MapRoute(.....,"Area/Portal/{controller}/{action}/{id},.....,new string[]{...namespce....});

或者可能会看到这篇文章http://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx