2011-07-15 16 views
0

私は奇妙な問題があります。私たちは、このページnull可能なパラメータを持つMVC3ルーティングの問題

routes.MapRoute(_ 
     "By_Section", _ 
     "home/{sectionID}/{title}", _ 
     New With {.controller = "Home", .action = "Index", .sectionID = Nothing}, 
     New With {.sectionID = "\d+"} 
     ) 

これは、すべての作品のためにかなりのURLを取得するように、私は、このアクションメソッドのための特定のルートを追加した

Function Index(sectionID As Integer?, title As String) As ActionResult 

    Return View() 
End Function 

オプションのパラメータのカップルを取るコントローラのアクションを持っています。しかし、sectionIDが設定されているページ(たとえばhttp://localhost/home/index/1/test)にいるとき、次のコードは奇妙な出力を生成します。代わりに、ご想像のとおりhttp://localhost/home/indexを示すの

<%= Url.Action("Index", "Home")%> 

は、それがhttp://localhost/home/index/1/testを示しています。つまり、現在のURLからsectionIDとtitleを取得し、自動的にURLに挿入しているようです。

これを防ぐにはどうすればよいですか?あなたが明示的に新しい価値を提供していない場合

ジェームズ

答えて

1

おかげではい、これは正常な動作です、ルーティングシステムは、現在のリクエストからパラメータ値を再利用します。リンクをレンダリングする場合の最良の選択肢は、すべてのルーティングパラメータに明示的な値を指定することです。

<%= Url.Action("Index", "Home", new { sectionID = (int?)null }) %> 
+0

お返事ありがとうございました。だから私はnullパラメータを強制することができます私のケースではnullのsectionIDは意味があるので? – James

+0

私の回答を更新しました – devdigital

関連する問題