2012-10-22 161 views
0

我有一個基於查詢字符串的值執行某些操作的頁面。不過,我最近注意到,當查詢字符串包含'&'字符時,這會中斷。'&'字符中斷查詢字符串

我知道我可以編寫一些代碼來翻譯父頁上的'&'字符,但我不得不相信有更好的方法來做到這一點。

下面是一個例子: 查詢字符串:運動科學&體育研究 這僅返回「運動科學」

這裏是我得到的字符串代碼:

string selectedDept = Request.QueryString [ "dept" ]; 

我會因爲頁面有時直接鏈接,所以不要加密URL。

+2

您需要對參數進行URL編碼。它們應該在Request.QueryString中自動解碼。 – Lloyd

+1

使用'HttpUtility.UrlEncode'和'HttpUtility.UrlDecode' –

回答

4

您不需要加密,您需要在生成Url之前對字符串進行編碼。

如果您正在使用MVC,你可以使用:

var url = "dept=" + Url.Encode(strDept); 

否則,你也可以使用:

var url = "dept=" + HttpUtility.UrlEncode(strDept); 

更新

不幸的是,這將產生一個醜陋的網址:

dept=Exercise%20Science%20%26%20Sports%20Studies 
1

的符號(&)字符是定義到單獨的請求參數,所以沒有其他的方式來獲得比來編碼它這樣的參數內。

你不需要加密的參數,只是給編碼吧。這種情況下的常見編碼是所謂的URL encoding。這種編碼的好處在於,普通字母和數字保持原樣;只有特殊字符使用百分號符號序列編碼。

0

你應該編碼你的參數,如: HttpUtility.UrlEncode(myUrl);

0

&符號用於分隔參數。

您需要對參數進行URL編碼。它們應該在Request.QueryString中自動解碼。

1

是的,&字符打破查詢字符串。它被用作分離參數的元字符。如果您需要在查詢參數中包含&字符,則必須將其編碼爲%26。在ASP.Net上,您可以使用HttpUtility.UrlEncode方法執行此操作,該方法在頁面範圍內的Server對象上調用。