5

私は ASP.NET MVC ルーティングを試していますが、もちろん問題に遭遇しました。/Admin/Pages/ というセクションがありますが、これは /Pages/ からもアクセスできますが、そうすべきではありません。何が欠けている可能性がありますか?

global.asax のルーティング コード:

public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Pages",    // Route name
            "Admin/Pages/{action}/{id}",  // URL with parameters
            // Parameter defaults
            new { controller = "Pages", action = "Index", id = "" }  
        );

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

    }

ありがとう!

4

4 に答える 4

7

最初に /Pages/ の明示的なルートを追加することをお勧めします。

問題は、それが Default ルートによって処理され、次のように導出されることです。

コントローラ = "ページ" アクション = "インデックス" id = ""

これは、管理ルートのパラメーターとまったく同じです。

于 2008-09-16T08:36:06.100 に答える
7

このようなルーティングの問題については、Route Debuggerアセンブリを試してください (テストでのみ使用してください)。これらの種類の問題を把握するのに役立ちます。

PS Pagesコントローラーを保護しようとしている場合は、必ず [Authorize] 属性を使用してください。URL 承認だけに頼らないでください。

于 2008-09-18T16:02:15.293 に答える
2

{Controller}タグが「Pages」にならないように、デフォルトのルールに制約を追加できます。

于 2008-09-16T08:53:07.633 に答える
0

デフォルトのアクションの設定と競合する最初のルート{action}トークン/パラメーターがあります。ルートのパラメータ名を変更するか、デフォルトのアクション名を削除してみてください。

于 2008-09-17T07:02:18.703 に答える