3

これで、メインのフロント エンド サイトを作成できました。エリアを追加し、バックエンドで作業を開始しました。私を悩ませている1つのことを除いて、両方のセクションは順調に進んでいます.

両方のエリアにホーム コントローラーを配置したいのですが、複数のコントローラーを配置できないというエラーが表示されます。私は運が悪いいくつかのチュートリアルに従いました。これが私が最後に試したものです。

これをテストするためだけに新しいプロジェクトを開始しました。これは、ルートの登録コードです。

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 String[] { "Test.Controllers" }
    );
}

このコードを Global.asax.cs ファイルに入れましたか? それは何の役にも立たないようです。これが私の実際のエラーです:

「ホーム」のリクエストで、次の一致するコントローラーが見つかりました: Test.Areas.Portal.Controllers.HomeController Test.Controllers.HomeController

どんなヒントや指針も素晴らしいでしょう!ここで尋ねられた他の質問を調べましたが、それらはすべて、私が既に行っていること、つまり上記で行った機能を追加することを行うように言っています。


コントローラーへのパス:
Areas - Portal - Controllers - HomeController.cs
Controllers - HomeController.cs

4

2 に答える 2

4

IgnoreRoute 行の直後に次を挿入してみてください

AreaRegistration.RegisterAllAreas();

編集:

新しいプロジェクトを作成し、Home コントローラーで新しい Area を追加してみました。アプリケーションを実行するだけで、エラーを再現できました。

あなたがしたのと同じコード変更を行うと、この問題が修正されました。

システム トレイの ASP.NET 開発サーバー アイコンを右クリックし、[終了] をクリックしてから、アプリケーションを再実行することをお勧めします。

これで問題が解決しない場合は、RegisterRoutes メソッドで指定した名前空間が、既定のコントローラーの完全な名前空間と正確に一致することを再確認してください。

于 2012-08-30T16:59:52.720 に答える
0

MapRouteデフォルトのものよりもう1つ必要だと思います。

routes.MapRoute(.....,"Area/Portal/{controller}/{action}/{id},.....,new string[]{...namespce....});

または、この投稿を参照してくださいhttp://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx

于 2012-08-30T16:52:47.743 に答える