【问题标题】:Multiples types were found home controller发现多个类型的家庭控制器
【发布时间】:2013-02-27 13:49:39
【问题描述】:

我需要在新区域建一个新家,但我有一个错误: 找到了与名为“Home”的控制器匹配的多种类型。如果服务此请求的路由 ('{controller}/{action}/{id}') 未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用采用“namespaces”参数的“MapRoute”方法的重载来注册此路由。 我的新区

Areas/Administrativo/Controllers/HomeController

区域/行政/视图/主页

我的 AdministrativoAreaRegistration

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

    }

在全球我有

    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 }, new[] { "Preparacao.Gerenciar.Web.Controllers" } // Parameter defaults
        );
    }

【问题讨论】:

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


    【解决方案1】:

    你应该在你的区域路由注册中指定命名空间约束(检查命名空间是否正确):

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Administrativo_default",
            "Administrativo/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "Preparacao.Gerenciar.Web.Areas.Administrativo.Controllers" }
        );
    }
    

    与您注册主要路线的方式相同:

    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[] { "Preparacao.Gerenciar.Web.Controllers" }
        );
    }
    

    【讨论】:

    • 谢谢我把 new[] {"Preparacao.Gerenciar.Web.Controllers"} 而不是 new[] { "Preparacao.Gerenciar.Web.Areas.Administrativo.Controllers" }
    • 我放了这个,但我得到这个错误对我不起作用,你有更多的想法吗?
    • 如果我输入localhost/HelpProvasGerenciar/Administrativo,我得到404,如果localhost/HelpProvasGerenciar我得到多个类型......
    • 这工作正常只是 Administrativo 但在默认 localhost/HelpProvas 不工作我得到错误倍数类型
    • public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{id}", // 带参数的 URL new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 新 []{ "Preparacao.Gerenciar.Web.Controllers" } );我的项目名称是 Preparacao.Gerenciar.Web.Controllers
    猜你喜欢
    • 2020-02-19
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多