2012-03-26 10 views
1

デフォルトルート値を変更したいと思います。global.asaxでルート値を変更する

は今、私が持っている:

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

私が持っているしたいと思います:{controller}/{id}/{action}

それは、私はすでにこれを試みてきたように値を変更するのと同じくらい簡単ではありません。私はこれにどのようにアプローチするのですか?

+0

あなたはid' 'は「オプションの」スペックを削除しましたか?それは最後の理由です。 –

+0

いいえ、URLを変更する方法がありますので、少なくともいくつかのケースでは、「id」は最後ではありませんか? –

答えて

1

これを行うには2つのルートが必要です。ただ、目安

テストされていない

routes.MapRoute(
     "Default", // Route name 
     "{controller}/{id}/{action}", // URL with parameters 
     new { controller = "Home", action = "Index", [email protected]"\d+" } // defaults 
    ); 

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

そして、この順序でそれらを保つ行います。

アクションの署名については全くわからないが、おそらくActionResult Index(int? id)

+0

これは機能します。しかし、アクションの 'id'シグネチャが' 0 'を読み取っている場合があります。これらの場合、 '{controller}/{action}'だけでなく、' {controller}/0 /アクション} 'これに関するアイデア? –

+0

Actionメソッド内ではいつでもそれを処理できます。それはちょうどパターンに合っていません。 –

+0

それは動作します。ありがとう。 –