2011-08-05 22 views
1

Iを仮定しますASP.NET MVC @ Url.Action現在のルートデータが含ま

  • は私Global.asaxファイル内のルート{controller}/{action}/{id}を持っています。
  • コントローラFooおよびアクションBar(String id)ビューを返す。
  • @Url.Action("bar", "foo")でレンダリングされたURLを含む非常に単純なビュー - 明示的にはidを指定していません。
  • /foo/bar/testを参照すると、レンダリングされたURLが/foo/bar/testと表示されます。 idの値を指定しなかったので、/foo/barであるはずです。

なぜ私はそれを指定しなかったとしても、これを防ぐ方法はありますか(URLを直接「ハードコーディング」しないでください)?

+0

が重複する可能性が追加されます生成されたURLへの現在のルート値](http://stackoverflow.com/questions/7133223/asp-net-mvc-url-action-adds-current-route-values-to-generated-url) – Stijn

答えて

1

/foo/bar/testをブラウザのアドレスバーに入力したときに、idの値を指定しました。基本的にfooコントローラのパラメータ "test"を使用してメソッドBarを呼び出しています。直接閲覧すると、あなたの単純なビューは無関係です。

最後の質問に答えるには、MVCの使い方を見直す必要があります。

+0

私はidを指定しました私がUrl.Actionを使用してリンクを定義したときにはページをブラウズしていませんでした。 IMHO、Url.Actionは、余分な価値のための「狩猟」ではなく、自分の要件へのリンクを構築する必要があります。つまり、/ foo/bar/testから/ foo/barへのリンクを作成することはできません。/foo/bar/from/foo/bar/testにフォームを投稿しようとしていたときに気づいた。 –

関連する問題