1

ソリューションを整理したかったのですが、領域を調べましたが、次のようです。「 ControllerName 」のリクエストで次の一致するコントローラーが見つかりました...エラーが有名になりつつあります。

エリアを追加するAdminと、プロジェクトのフォルダー構造は次のようになります。

  • エリア
    • 管理者
      • コントローラー
      • HomeController
    • AdminAreaRegistration.cs
  • コントローラー
    • HomeController

AdminAreaRegistrationファイルには、次のものがあります。

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

そして、私は自分のルートを登録するときにこれを行っています:

routes.MapRoute(
    "Home", 
    "Home/Index", 
    new { controller = "Home", action = "Index" }
);

私は私の方法でこれを行うためにここApplication_Startを読んだ:

ControllerBuilder.Current.DefaultNamespaces.Add("X.Web.Controllers");

残念ながら、エラーは修正されませんでした。次に、ここを読んで、RegisterRoutesメソッドにデフォルト(ルート)コントローラーの名前空間を追加します。

エリアはルーティングがすべてであり、フォルダは単に必要なだけですが、それらは便利です。

HomeControllerこの場合、ルートを特定のルートにマッピングするにはどうすればよいですか。X.Web.Controllers一方はに、もう一方はにありX.Web.Areas.Admin.Controllersます。さらに、これまで読んだすべての例でリンクがメソッドを使用して生成されているため、リンクを@Html.RouteLinkの代わりにヘルパーを使用して生成できるかどうかを知りたいと思います...これは疑問です。ActionLinkActionLink

提供されたヘルプ/ガイダンスに感謝します。ありがとう。

4

1 に答える 1

1

私は同様の問題に遭遇しましたが、「クリーンな」解決策が見つからなかったため、HomeControllerの1つを名前変更することになりました。これは役立つはずです。

リンクに関しては-はい、それらを生成することは可能です、あなたはパラメータの1つ(routeValues)にエリア名を追加する必要があります、それで:

@Html.ActionLink("link text", "ActionName", "ControllerName", new { area = "Admin" })
于 2012-09-18T17:22:50.237 に答える