2012-03-08 79 views
3

它是一個關於MVC3 Razor的小問題,當我試圖調用Controller的詳細信息或刪除方法時,我有一個類似「a/b」的字符串ID。作爲系統假設「a/b」爲2個參數而出現錯誤,但我必須將其傳遞給一個字符串值參數。MVC3 Razor URL.Action帶正斜槓的參數值。給出錯誤

- 編輯

< a href="@Url.Action("Details", "Search", new {id = "a/b"})">Details </a> 

我的控制器/法就像是 搜索/詳細信息(字符串ID)

而且我想給ID = 'A/B'。但.Net假定它是URL中的2個參數。

請建議。

回答

3

看來,正斜槓不會自動編碼,其原因可能是因爲即使他們被編碼(%2F),由時間他們到達路由引擎,他們被解碼回正斜槓。 (Phil Haack(MVC團隊的前任經理)在this post中搜索Robj)。

但是,.NET MVC Routing w/ Url Encoding Problems提出了相同的問題,並且似乎解決此問題的唯一方法是將編碼的斜槓插入到查詢字符串中。事情是這樣的:

< a href="@Url.Action("Details", "Search")[email protected]("a/b")">Details </a> 

,然後,處理它在你的方法,通過訪問:

Request["id"] 
+0

我正在使用webgrid,並有一個鏈接來呼叫詳細信息,但我的ID是'a/b'。請建議如何在MVC3中逃脫。 我的請求是這樣的:@ Url.Action(「Details」,「Search」,new {id =「a/b」} 當我點擊鏈接時尋找URL「Search/Details/a/b」和 – Arvind 2012-03-08 16:29:25

+0

我試過這個,但它給了我同樣的錯誤 @ Html.ActionLink(「Text To Display」,「Action」,「Controller」,new {id =「a // b」}) 。 as .Net intrepret again in'a/b' – Arvind 2012-03-08 16:36:17

+0

這很奇怪,我的理解是值應該被轉義 – 2012-03-08 16:40:31

0

你應該使用一個轉義的網址,因此該參數將a%2Fb

+0

拉撒路嗨,它給我上點擊鏈接錯誤的請求錯誤。 – Arvind 2012-03-08 16:39:36

+0

你是說這不起作用嗎?@ Html.ActionLink(「Text To Display」,「Action」,「Controller」,new {id =「a%2Fb」})'? – Lazarus 2012-03-08 16:44:57

+0

是的,當我使用「a%2Fb」時,單擊按鈕出現錯誤「錯誤的請求」 – Arvind 2012-03-08 16:47:29