2008-12-09 95 views
6

我試圖將u url作爲參數傳遞給get方法。 我定義了一個接受{* url}參數的路由,所以我可以發送「/」字符而不用分開我的參數。 只要URL中存在「:」(例如,http:或localhost:3857),該方法就不會被觸發。傳遞URL作爲get參數?

Html.ActionLink方法轉義它的參數本身,但它似乎並沒有轉義':'。我無法手動轉義它,因爲轉義字符被相同的Html.Actionlink方法轉義。

有什麼想法?

回答

3

在傳遞它之前使用EncodeUrl,然後在另一端對其進行解碼。

+0

我不知道任何EncodeUrl(我在哪裏可以找到它),但我沒有嘗試HttpUtility.UrlEncode和HttpUtility.UrlPathencode。他們都結束了路由我一個(不存在的)目標文件而不是我的方法:( – 2008-12-09 13:47:05

0

這有點破解,但你可以用'%3A'(這是轉義形式)替換':',看看ActionLink如何處理它。如果它再次被轉義,你必須將兩次轉義的版本替換回服務器上的':',否則只需將'%3A'替換回':'

1

我遇到了同樣的問題。我結束了去除Html.ActionLink,取而代之的是:

<a href="[email protected]">@item.Title</a> 

@ item.ID是從Netflix API,例如http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357返回的URL。現在我的網址看起來像這樣 - /Home/Movies?id=http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357,我剛剛使用Request.QueryString獲取控制器中的值:

Request.QueryString.Get("id") 

可能不理想,但它現在的作品。