我有一個網址:如何獲得查詢字符串與多個PARAM
http://www.abc.com?refurl=/english/info/test.aspx?form=1&h=test&s=AB
如果我使用
Request.QueryString["refurl"
,但給我
/english/info/test.aspx?form=1
,而不是我需要的完整URL
/english/info/test.aspx?form=1&h=test&s=AB
我有一個網址:如何獲得查詢字符串與多個PARAM
http://www.abc.com?refurl=/english/info/test.aspx?form=1&h=test&s=AB
如果我使用
Request.QueryString["refurl"
,但給我
/english/info/test.aspx?form=1
,而不是我需要的完整URL
/english/info/test.aspx?form=1&h=test&s=AB
對於你不應該使用查詢字符串,特定情況下(因爲您的查詢字符串包含三個參數)改用Uri
類,並Uri.Query
會給你所需的結果。
Uri uri = new Uri(@"http://www.abc.com?refurl=/english/info/test.aspx?form=1&h=test&s=AB");
string query = uri.Query;
,這將給你:
?refurl=/english/info/test.aspx?form=1&h=test&s=AB
稍後,您可以刪除?refurl=
以獲得所需的輸出。
我敢肯定沒有直接的方式爲您的特定需求的框架,你必須實現在你的代碼,並且也與字符串操作。
如果你發送更多參數(不僅僅是返回) – 2013-02-11 07:40:25
@EvaldasDzimanavicius,它不會工作,當然它不會,但那不是問題。似乎OP對[查詢](http://msdn.microsoft.com/zh-cn/library/system.uri.query.aspx)Uri – Habib 2013-02-11 07:42:00
則應更換&
與&
。
我有類似的情況,前一段時間。 我通過編碼refurl價值解決它。 現在我的URL看起來類似於一個: http://www.abc.com?refurl=adsf45a4sdf8sf18as4f6as4fd
我已經創建了2種方法:
public string encode(string);
public string decode(string);
重定向之前,或者你有你的鏈接,你簡單的編碼的鏈接,你在哪裏讀書呢,使用前解碼:
Response.redirect(String.Format("http://www.abc.com?refurl={0}", encode(/english/info/test.aspx?form=1&h=test&s=AB));
,並在頁面所使用refurl:
$refUrl = Request.QueryString["refurl"];
$refUrl = decode($refUrl);
編輯: 編碼/解碼方法,其實,我爲擴展方法,那麼對於每一個字符串我可以簡單地使用string.encode()
或string.decode()
。
屬性感興趣,你的回答也是正確的。我正在嘗試使用沒有編碼。 – 2013-02-11 08:06:16
修復問題,而問題是,你把一個完整的URL與出它的編碼參數refurl
。
那麼,您創建一個URL字符串使用UrlEncode()
功能,如:
"http://www.abc.com?refurl=" + Server.UrlEncode(ReturnUrlParam)
其中
ReturnUrlParam="/english/info/test.aspx?form=1&h=test&s=AB";
但首先,你的查詢字符串包含兩個''是不是在?正確的格式 - 而且因爲你做到了這一點,所以最好解決這個問題。當你添加一個完整的url字符串時,你可以使用UrlEncode函數修復它 – Aristos 2013-02-11 07:43:49