2011-08-05 37 views
1

假設我:ASP.NET MVC @ Url.Action包括當前的路由數據

  • 在我的Global.asax文件的路徑{controller}/{action}/{id}
  • 控制器Foo和動作Bar(String id)返回一個視圖。
  • 一個非常簡單的視圖,其中包含由@Url.Action("bar", "foo")呈現的網址 - 顯式不指定id
  • 如果我瀏覽到/foo/bar/test,視圖將顯示呈現的URL爲/foo/bar/test。我預料它應該是/foo/bar,因爲我沒有指定id的值。

爲什麼它會包含當前的id,即使我沒有指定它,是否有任何方法來防止這種情況(除了直接對URL進行「硬編碼」)?

+0

可能重複[ASP.NET MVC Url.Action增加當前路由值生成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定義鏈接時。恕我直言,Url.Action應該建立一個鏈接到我的要求,而不是'狩獵'額外的價值。這意味着我無法從/ foo/bar/test創建到/ foo/bar的鏈接。當我嘗試將表單發佈到/ foo/bar/from/foo/bar/test時,我注意到了這一點。 –