2008-12-09 27 views
6

Bir url yöntemine parametre olarak u url iletmeye çalışıyorum. {* url} parametresini kabul eden bir rotayı tanımladım, böylece parametreyi ayırmadan "/" karakterleri gönderebiliyorum. Url'de bir ":" varsa (örneğin http: veya localhost: 3857 gibi), yöntem hiçbir zaman vurulmaz.URL'yi get parametresi olarak geçir?

Html.ActionLink yöntemi, parametrenin kendisinden kaçar, ancak ':' den kaçmayabilir. Elle kaçamıyorum çünkü o zaman aynı karakterleri, aynı Html.Actionlink yönteminden kaçınıyor.

herhangi bir fikir?

cevap

3

EncodeUrl'u geçirmeden önce kullanın ve sonra diğer tarafın kodunu çözün.

+0

EncodeUrl (nerede bulabilirim) hakkında bilmiyorum ama HttpUtility.UrlEncode ve HttpUtility.UrlPathencode'ı denedim. Her ikisi de benim yöntem yerine bir (varolmayan) hedef dosyaya yönlendiriyorlar :( –

+0

HtmlTextWriter.EncodeUrl – Kieveli

+0

HtmlTextWriter.EncodeUrl Yöntemi Belirtilen URL'deki boşlukları "% 20" dizesine dönüştürerek en az URL kodlaması gerçekleştirir. boşluklar benim sorunum değil –

0

Bu bir kandırmacadır, ancak ':' ile '% 3A' (ki bu kaçak biçimdir) ile değiştirebilir ve ActionLink'in onunla ne yaptığını görebilirsiniz. Bir kez daha kaçtıysanız, iki kez kaçan sürümü sunucuda ':' olarak değiştirmelisiniz, aksi takdirde '% 3A' yerine ':'

1

'u değiştirdim ve aynı soruna girdim. Ben Html.ActionLink çıkarmadan sona erdi ve onu değiştirdik: item.ID @

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

netflix API örnek http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357 döndü url'sidir. Şimdi benim url bu gibi görünüyor - /Home/Movies?id=http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357, ve denetleyicideki değeri almak için sadece Request.QueryString kullandım :

Request.QueryString.Get("id") 

Muhtemelen ideal değil ama şimdilik çalışıyor.

İlgili konular