2011-06-26 3 views
0

デフォルトのルートのURLに干渉することなく、コントローラとアクションを削除しますか?カスタムルーティング - コントローラとアクションをURLから削除する

:たとえば http://mysite.com/departaments/products/footwear/male departaments =コントローラ、アクション=製品や靴、男性=パラメータ

へ: http://mysite.com/footwear/male

だから私は、カスタムルート例のコントローラとアクションを取ります:あなたは、デフォルトルートの後にそれ以外の製品のルートを製品のルートを追加する必要が

 routes.MapRoute 
     (
      "Products", 
      "{p0}/{p1}/{p2}/{p3}/{p4}/{p5}", 
      new 
      { 
       controller = "Departaments", 
       action = "Products", 
       p0 = "", 
       p1 = "", 
       p2 = "", 
       p3 = "", 
       p4 = "", 
       p5 = "" 
      }, 
      new String[] 
      { 
       "MvcApplication1.Controllers" 
      } 
     ); 


     routes.MapRoute 
     (
      "Default", 
      "{controller}/{action}/{p0}", 
      new 
      { 
       controller = "Home", 
       action = "Index", 
       p0 = "" 
      }, 
      new String[] 
      { 
       "MvcApplication1.Controllers" 
      } 
     ); 

答えて

0

ますALWA ysは6つのセグメント以下のURLに一致します。これにより、新しい問題が発生する可能性があります。すべてのコントローラ名を含むコントローラトークンに制約を追加しない限り、Defaultルートは3つ以下のセグメントのURLと一致します。 controller = @"home|account|departments"MvcCodeRoutingライブラリは、(コントローラとアクションの制約を使用して)非常に厳しいルートを自動的に登録することができます。独自のルートを追加することもでき、競合の心配もありません。


routes.MapRoute("Default", "{controller}/{action}/{p0}", 
    new { controller = "Home", Action = "Index", p0 = "" }, 
    new { controller = @"Home|Account" }, // Register controllers here 
    new[] { "MvcApplication1.Controllers" }); 

routes.MapRoute("Products", "{p0}/{p1}/{p2}/{p3}/{p4}/{p5}", 
    new { controller = "Departaments", Action = "Products", p0 = "", p1 = "", p2 = "", p3 = "", p4 = "", p5 = "" }, 
    new[] { "MvcApplication1.Controllers" }); 
+0

あなたはこの実装の例を持っていますか? –

+0

@Tiago Tartari:サンプルコードを追加しました。 –

関連する問題