2008-09-16 9 views
5

私はASP.NET MVCルーティングを試していますが、もちろん問題を抱えています。私はセクション/ Admin/Pages /を持っていますが、これは/ Pages /からアクセスすることもできます。私は何が欠けていますか? Global.asaxの中Asp.net MVCルーティングがあいまいで、同じページの2つのパス

ルーティングコード:

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 = "" } 
     ); 

    } 

ありがとう!

答えて

6

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

問題は、それがデフォルトルートによって処理され、導出されたということです:

コントローラ=「ページ」 アクション=「インデックス」 ID =「」正確パラメータと同じである

あなたのAdminルートのために。

2

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

0

あなたは最初にデフォルトのアクションの設定と矛盾する{アクション}トークン/パラメータをルーティングしました。あなたのルートでパラメータ名を変更してみるか、デフォルトのアクション名を削除してください。

6

このようなルーティングの問題については、Route Debuggerアセンブリを試してみる必要があります(テストでのみ使用してください)。これらのタイプの問題を理解するのに役立ちます。

P.S.ページコントローラーを保護する場合は、必ず[Authorize]属性を使用してください。 URLの承認に頼るだけではありません。

+0

これは、PagesControllerのIndexアクションメソッドを保護するためのものです。 –

関連する問題