2011-11-08 14 views
0

あなたがUrl.Action( "インデックス"、 "MyController")を使用してURLを生成すると、期待どおりあなたが得るだろう、私は以下の今ASP.MVC 3ルーティング:デフォルトアクションを含むURLを取得する方法は?

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

をルーティングしていると仮定:/ MyController

しかし、一つで例外的な場合、私は完全なURL/MyController /インデックス (ルーティングを変更することなく)を取得したいと思います...これが可能であれば誰でも知っていますか?

+0

なぜ完全なURLが必要なのですか(私はちょうど興味があります)? – jgauffin

+0

私はそれが問題になる場合があります... – rekna

+0

はい、私はなぜ知っているのですか? – jgauffin

答えて

2

可能です。しかし、ルーティングを変更する必要があります。

  1. Route
  2. がそれを必要とするページの /indexが含まれるように GetVirtualPath()メソッドをオーバーライド
  3. 派生独自のルーティングクラスを作成します。
  4. 代わりにルーティングクラスを使用してデフォルトルートを設定します。
+0

これは大丈夫ですが、最終的にこれらの特定のケースで編集を行うように変更し、オーバーロードされたUrl.Actionを作成しました(私はT4MVCを使用しています) : public static stringアクション(このUrlHelperのurl、ActionResultの結果、文字列のフラグメント) { return UrlHelper.GenerateUrl((string)null、(string)null、(string)null、(string)null、(string)null 、フラグメント、result.GetRouteValueDictionary()、url.RouteCollection、 url.RequestContext、t rue); } – rekna

1

恐れ入りますが、これはできません。そして、両方のURLが同じコントローラアクションに解決されるので、それは重要ではありません。

関連する問題