0

新しいエリアに新しい家を置く必要がありますが、エラーがあります。「ホーム」という名前のコントローラーに一致する複数のタイプが見つかりました。これは、このリクエストを処理するルート('{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
        );
    }
4

1 に答える 1

2

エリアルート登録で名前空間制約を指定する必要があります(名前空間が正しいかどうかを確認してください)。

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" }
    );
}
于 2013-02-27T13:55:45.693 に答える