在我的项目中遇到同名多个控制器的问题

我遇到了以下错误与我的ASP.NET MVC 3项目:

发现多个类型与名为'Home'的控制器相匹配。 如果为这个请求提供服务的路由('Home / {action} / {id}')没有指定名称空间来搜索匹配请求的控制器,就会发生这种情况。 如果是这种情况,请通过调用带有'namespaces'参数的'MapRoute'方法的重载来注册此路由。

'Home'的请求找到了以下匹配的控制器:MyCompany.MyProject.WebMvc.Controllers.HomeController MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController

我在我的默认控制器文件夹中有一个HomeController,其类名为MyCompany.MyProject.WebMvc.Controllers.HomeController。

我的RegisterRoutes方法,在我的global.asax中,如下所示:

    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
        );
    }

然后我有一个名为Company的区域,在该区域的默认控制器文件夹中有一个HomeController,其类名为MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController。

CompanyAreaRegistration文件中的RegisterArea方法如下所示:

   public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Company_default",
            "Company/{controller}/{action}/{id}",
            new { area = "Company", action = "Index", id = UrlParameter.Optional }
        );
    }

这是我在本文开头强调的错误。 我努力拼凑来自各种其他职位的解决方案,但没有幸运

是否有可能在默认的控制器文件夹中有一个HomeController,然后在每个区域有一个? 如果是这样,我需要(假设我这样做)改变我的配置文件,使其工作?

任何帮助将非常感激!


错误消息包含推荐的解决方案:“如果是这种情况,请通过调用带有'namespaces'参数的'MapRoute'方法的重载来注册此路由。”

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

这将使http://服务器/去你的HomeController的索引行动,这是我想,你想要的。 http:// server / company / home将转到Company区域的HomeController的Index操作,如区域注册中所定义。


这是asp.net mvc4的方法:

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "RegisterNow", id = UrlParameter.Optional },
            namespaces: new[] { "YourCompany.Controllers" }
        );

我已经重命名了命名空间,所以,我只删除了 de文件夹binobj重建 ,再次运行。

链接地址: http://www.djcxy.com/p/80085.html

上一篇: Having issue with multiple controllers of the same name in my project

下一篇: ASP.NET MVC Default URL View