3

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

我想在这两个区域都有一个 Home 控制器,但得到一个错误,我不能拥有多个。我遵循了一些教程,但没有运气。是我尝试的最后一个。

我已经开始了一个新项目,只是为了测试这里是我的注册路线代码:

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

4

2 回答 2

4

尝试在 IgnoreRoute 行之后立即插入以下内容

AreaRegistration.RegisterAllAreas();

编辑:

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

进行与您所做的相同的代码更改来解决此问题。

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

If this does not fix it, double check that the namespace you specify in your RegisterRoutes method exactly matches the full namespace of the default controllers.

于 2012-08-30T16:59:52.720 回答
0

我认为你需要一个MapRoute高于默认的。

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

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

于 2012-08-30T16:52:47.743 回答