2009-07-14 150 views
4

是否有一種方法可以在不嘗試urlencode每個查詢字符串參數的情況下對整個URL查詢字符串進行url編碼。現在我遇到了這樣的事情,重建查詢字符串:urlencode所有查詢字符串參數

foreach (string x in Page.Request.QueryString.Keys) 
{ 
sQueryString += x + "=" + Server.UrlEncode(Request.Params.Get(x)) + "&"; 
} 

回答

6

所有你應該做的是得到以下值:

Page.Request.Url.Query 

參見:

 
    Uri baseUri = new Uri(" http://www.contoso.com/catalog/shownew.htm?date=today&<a>=<b&gt ;"); 
    string queryString = baseUri.Query; 

The queryString參數將返回?date=today&%3Ca%3E=%3Cb%3E

還有一個編輯 - 從MSDN

查詢屬性包含包含在URI中的任何查詢 信息。查詢 信息通過問號(?)與路徑 分開,並且 繼續到URI的末尾。返回的查詢信息 包含 的主要問號。

默認情況下,查詢信息根據RFC 2396轉義 。如果 國際資源標識符 (IRIS)或國際化域名 名稱(IDN)的解析被啓用, 查詢信息是根據 以RFC 3986和RFC 3987.

+0

這將給你整個當前的QueryString,但是如果你運行URLEncode你將失去你的值,因爲&符號將被URL安全版本所取代。 – 2009-07-14 18:41:19

0

除了使用的String.Format,你逃脫在QueryString的末尾有一個額外的&,上面的方法是最優的。