5

我目前在同一个文件夹中有 2 个项目。主要的

  • 项目1
  • 项目2

问题:

找到了与名为Account的控制器匹配的多种类型。如果为该请求提供服务的路由('{controller}/{action}/{id}')未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用带参数的MapRoute方法的重载来注册此路由。namespaces

请求Account找到了以下匹配的控制器:

Project1.Controllers.AccountController

Project2.Controllers.AccountController

我使用 Foundation 4。谢谢提前

4

2 回答 2

8

you need to use the version with this signature

public static Route MapRoute(
       this RouteCollection routes,
       string name,
       string url,
       Object defaults,
   string[] namespaces )

To make it work just set up two almost identical routes - one which includes the project1 for the namespaces parameter and then a second identical version but use project2 in the namespaces parameter. That said, it would generally be less confusing, to use different names if you can...

routes.MapRoute(
    name: "Default_Project1",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional,
    namespaces: new string[] { "Project1" } }
);

routes.MapRoute(
    name: "Default_Project2",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional,
    namespaces: new string[] { "Project2" }
);
于 2013-09-23T06:13:39.363 回答
7

当我复制一个 MVC 项目并重命名所有命名空间时,我遇到了同样的问题。

我尝试了上述解决方案,但没有奏效。

即使在我清理并重建了我的项目之后,Visual Studio 仍在查看旧的命名空间 dll。

所以解决方案:

  • 右键单击解决方案,单击“清除解决方案”
  • 手动删除 /bin 和 /obj 文件夹中的所有内容
  • 构建您的解决方案
于 2016-01-04T12:06:04.660 回答