发现多个类型的家庭控制器

Posted

技术标签:

【中文标题】发现多个类型的家庭控制器【英文标题】: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
        );
    

【问题讨论】:

【参考方案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

以上是关于发现多个类型的家庭控制器的主要内容,如果未能解决你的问题,请参考以下文章

windows10家庭版怎么使用hyper-v?

无法在家庭控制器中使用模型类方法

一段时间后,Alexa 家庭技能请求未达到 lambda 函数

对于具有不同类型控件的单个视图,我是不是需要多个控制器?

模拟器不会在家庭 TableView 上启动

找到多个与名为“Login”的控制器匹配的类型