1

ASP.NET MVC 2 単一プロジェクト エリアの登録を機能させようとしています。Preview 2 で試してみましたが、現在はベータ版で運がありません。「エリアの追加」ダイアログを使用して、「NewsModule」エリアを作成しました。その中に NewsModuleController とその Index ビューを作成しました。

このエリアのルート登録は次のようになります。

context.MapRoute(
                "NewsModule_default",
                "NewsModule/{action}/{id}",
                new { action = "Index", id = "", controller = "NewsModule", area = "NewsModule" }
            );

AreaRegistration.RegisterAllAreas(); を追加しました。私の Global.asax を呼び出します。http://localhost/mymvcproj/NewsModuleにアクセスすると、HTTP 404 エラーが発生します。

Phil Haack のルート デバッガーを使用して、ルートが正しくマッピングされ、この URL によってキャッチされていることを確認できましたが、フレームワークがエリア ファイルを特定できていないようです。

誰でも助けることができますか?

ありがとう、フェリペ

4

2 に答える 2

2

問題が解決しました。これが私が解決するためにしたことです:

AreaRegistration.cs ファイル:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "NewsModule_default",
        "NewsModule/{controller}/{action}/{id}",
        new { controller = "NewsModule", action = "Index", id = "" });
}

重要: 「.Areas.」を追加します。名前空間 (Namespace.Areas.ControllerName) に。

Global.asax.cs:

public static void RegisterRoutes(RouteCollection ルート)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    // IgnoreRoute() の直後に呼び出す必要があります
    AreaRegistration.RegisterAllAreas();

    ルート.MapRoute(
        "Default", // ルート名
        "{controller}/{action}/{id}", // パラメータ付き URL
        new { controller = "Home", action = "Index", id = "" } // パラメータのデフォルト
    );

    //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
于 2009-12-12T12:45:48.420 に答える
0

Area/NewsModuleフォルダのルート登録から"area="NewsModule"を削除してみてください。

context.MapRoute(
                "NewsModule_default",
                "NewsModule/{action}/{id}",
                new { action = "Index", id = "", controller = "NewsModule"}
            );

これが私のアカウントエリアルート登録です、

場所/エリア/アカウント/

public class AccountAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get { return "Account"; }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Account_default",
                "Account/{controller}/{action}/{id}",
                new { controller = "", action = "", id = "" }
            );
        }
    }
于 2009-11-20T11:47:40.173 に答える