7

〜/ホームインデックスへのマッピングと〜/ブログインデックスへのブログマッピングは問題ありませんが、〜/ホームインデックスへのマッピングを防ぐにはどうすればよいですか?複数のエンドポイントからルートにアクセスできるようにしたくありません。

同様に、〜/ Controllerと〜/ Controller / Indexの両方から他のすべての「インデックス」アクションにアクセスできないようにするにはどうすればよいですか?

OK〜 /
NO〜 / Home NO〜
/ Home / Index
OK〜
/ AnyOtherController NO〜/ AnyOtherController / Index

ルールは、デフォルトのアクションに明示的にアクセスできないようにするようなものである必要があります。また、ホームの場合は、コントローラーだけでアクセスできないようにする必要があります。

これはできますか?過去に行われたことがありますか?たとえば、これは行われず(ここまたはそこにアクセスできます)、両方ともホームページをレンダリングします。また、デフォルトのアクション名は「インデックス」とは異なる可能性があります。これはおそらくアクセス可能なルートでもあります。

4

3 に答える 3

4

これらのルートを 404 エラーと見なすために、このように実装しましたが、まだ MVC アプリケーション内にあります (カスタム エラー ビューを実行するため)。

    /// <summary>
    /// By not using .IgnoreRoute I avoid IIS taking over my custom error handling engine.
    /// </summary>
    internal static void RegisterRouteIgnores(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "IgnoreHome",
            "Home",
            new { controller = "Error", action = "NotFound" }
        );

        routes.MapRoute(
            "IgnoreIndex",
            "{controllerName}/Index/{*pathInfo}",
            new { controller = "Error", action = "NotFound" }
        );

これにより、 を使用して Home/Index アクションにアクセスできますが/home/{id}、私はそれを受け入れるつもりです。

于 2012-04-06T17:30:44.157 に答える
4

パターンに一致する URL にルーティングを適用しないことを宣言するだけです。例えば:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Ignore("Home/{*pathInfo}");
    routes.Ignore("{controller}/Index");
}

これらのルートに一致する URL は、もちろん存在しない裸のページとして扱われます。

于 2012-04-04T16:19:21.603 に答える
0

これが、あなたが求めていると思うことを達成することができた方法です。

// Portal Sections
        routes.MapRoute("Home",
                        "",
                        new { controller = "Home", action = "Index" },
                        new[] { "Myapp.Portal.Controllers" });

        routes.MapRoute("About",
                        "about",
                        new { controller = "Home", action = "About" },
                        new[] { "Myapp.Portal.Controllers" });

        routes.MapRoute("Features",
                        "features",
                        new { controller = "Home", action = "Features" },
                        new[] { "Myapp.Portal.Controllers" });


        routes.MapRoute("Help",
                        "help",
                        new { controller = "Help", action = "Index" },
                        new[] { "Myapp.Portal.Controllers" });

        routes.MapRoute("Knowledgebase",
                        "help/kb",
                        new { controller = "Help", action = "Knowledgebase" },
                        new[] { "Myapp.Portal.Controllers" });

アクセスできます

  • mysite.com
  • mysite.com/about
  • mysite.com/features
  • mysite.com/help
  • mysite.com/help/kb

しかし、アクセスは利用できません

  • mysite.com/home/about
  • mysite.com/home/features

この助けを願っています:)

于 2012-10-07T22:21:38.750 に答える