2

私のフォルダは次のようになります。

  • (ルート)/エリア/管理者/ビュー/..
  • (ルート)/エリア/管理者/コントローラー/...
  • (ルート)/Areas/Admin/Routes.cs

  • (ルート)/エリア/フォーラム/ビュー/..

  • (ルート)/エリア/フォーラム/コントローラー/...
  • (ルート)/Areas/Forum/Routes.cs

    public class Routes : AreaRegistration
    

    { public override string AreaName { get { return "Admin"; } }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_Default",
            "{controller}/{action}/{Id}",
            new { controller = "Admin", action = "Index", Id = (string)null }
        );
    }
    

    }

    public class Routes : AreaRegistration { public override string AreaName { get { return "Forum"; } }

    public override void RegisterArea(AreaRegistrationContext routes)
    {
        routes.MapRoute(
            "Forum_Default",
            "{controller}/{action}",
            new { controller = "Forum", action = "Index"}
        );
    }
    

    }

Global.asax

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

        AreaRegistration.RegisterAllAreas();

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

開始ページは Home/Index である必要がありますが、Admin/Index で始まるのはなぜですか?

site.com/Admin のみが機能し、site.com/Forum は機能しません

管理者エリアとフォーラム エリアを正しく機能させるにはどうすればよいですか? 管理者のみが機能し、フォーラムが機能しないのはなぜですか?

Admin/Routes.cs ファイルを削除すると、フォーラムが機能し始めます...

編集:

~/Views/ のホームが開始ページとして表示されない

    routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults

AreaRegistration.RegisterAllAreas(); の後の Global.asax で

4

1 に答える 1

2

エリア マッピングはそのように構成する必要があると思います。

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Admin_Default",
        "Admin/{controller}/{action}/{Id}",
        new { controller = "Admin", action = "Index", Id = (string)null }
    );
}

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Forum_Default",
        "Forum/{controller}/{action}/{Id}",
         new { controller = "Forum", action = "Index"}
    );
}

ルートが競合しないようにします。これは、あなたの場合に起こっていると思います。デフォルト ルートは管理ルートと一致するためです。

于 2009-11-12T12:06:31.097 に答える