我有一個基於查詢字符串的值執行某些操作的頁面。不過,我最近注意到,當查詢字符串包含'&'字符時,這會中斷。'&'字符中斷查詢字符串
我知道我可以編寫一些代碼來翻譯父頁上的'&'字符,但我不得不相信有更好的方法來做到這一點。
下面是一個例子: 查詢字符串:運動科學&體育研究 這僅返回「運動科學」
這裏是我得到的字符串代碼:
string selectedDept = Request.QueryString [ "dept" ];
我會因爲頁面有時直接鏈接,所以不要加密URL。
我有一個基於查詢字符串的值執行某些操作的頁面。不過,我最近注意到,當查詢字符串包含'&'字符時,這會中斷。'&'字符中斷查詢字符串
我知道我可以編寫一些代碼來翻譯父頁上的'&'字符,但我不得不相信有更好的方法來做到這一點。
下面是一個例子: 查詢字符串:運動科學&體育研究 這僅返回「運動科學」
這裏是我得到的字符串代碼:
string selectedDept = Request.QueryString [ "dept" ];
我會因爲頁面有時直接鏈接,所以不要加密URL。
您不需要加密,您需要在生成Url之前對字符串進行編碼。
如果您正在使用MVC,你可以使用:
var url = "dept=" + Url.Encode(strDept);
否則,你也可以使用:
var url = "dept=" + HttpUtility.UrlEncode(strDept);
更新:
不幸的是,這將產生一個醜陋的網址:
dept=Exercise%20Science%20%26%20Sports%20Studies
的符號(&
)字符是定義到單獨的請求參數,所以沒有其他的方式來獲得比來編碼它這樣的參數內。
你不需要加密的參數,只是給編碼吧。這種情況下的常見編碼是所謂的URL encoding。這種編碼的好處在於,普通字母和數字保持原樣;只有特殊字符使用百分號符號序列編碼。
你應該編碼你的參數,如: HttpUtility.UrlEncode(myUrl);
&符號用於分隔參數。
您需要對參數進行URL編碼。它們應該在Request.QueryString中自動解碼。
是的,&
字符打破查詢字符串。它被用作分離參數的元字符。如果您需要在查詢參數中包含&
字符,則必須將其編碼爲%26
。在ASP.Net上,您可以使用HttpUtility.UrlEncode
方法執行此操作,該方法在頁面範圍內的Server
對象上調用。
您需要對參數進行URL編碼。它們應該在Request.QueryString中自動解碼。 – Lloyd
使用'HttpUtility.UrlEncode'和'HttpUtility.UrlDecode' –