ASP.net MVC单独的解决方案具有相同的控制器名称(不同的命名空间)

时间:2016-01-25 14:45:54

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

当我在不同的项目中拥有相同的控制器名称时,我遇到了一些问题。 我的主要解决方案是Web表单,我有两个MVC单独的项目(单独的文件夹),问题如果我在第一个项目中有一个名称为HomePage的控制器和解决方案2中的相同控制器名称我有一个错误: 发现多个类型与名为“HomePage”的控制器匹配。如果为此请求提供服务的路由('{* pathInfo}')未指定名称空间来搜索与请求匹配的控制器,则会发生这种情况。如果是这种情况,请通过调用带有'namespaces'参数的'MapRoute'方法的重载来注册此路由。

'HomePage'的请求找到了以下匹配的控制器: Project1.Controllers.HomePageController Project2.Controllers.HomePageController

global.asa是在Web表单解决方案中我添加了两个路由映射但我仍然有相同的错误。 解决此问题的任何解决方案? 我可以在视图中使用命名空间进行操作 @ Html.Action(“index”,“HomePage”) 谢谢

1 个答案:

答案 0 :(得分:2)

如果需要在注册路由时设置名称空间值,则应该这样做:

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

通过指定命名空间,它消除了歧义。