2013-06-24 17 views
2

我在這種情況下難住了。基本上我有一個URL傳遞給一個aspx頁面,然後我嘗試從URL中獲取查詢字符串,但是當我嘗試從URL中獲取查詢字符串時忽略了'+'並將其替換爲空白。請求對象不拾取的所有字符

My URL = http://localhost:3872/Test.aspx?mt=jan1TNIixxA1+8tl/0vLLg2PPGq0vMOLEhFQNuG4AJU12VMZpnWTrgar82K5UlXatQT9E9EAUet+q7rq7FoTJf+S2JnSbIptgJDY1EZwRPJDTROktfu5zy25oydmSHB6a4oZetV5mI3s+0R7vW8I0S9d765RHdYU2xkRuojHYZU= 

Request["mt"] =jan1TNIixxA1 8tl/0vLLg2PPGq0vMOLEhFQNuG4AJU12VMZpnWTrgar82K5UlXatQT9E9EAUet q7rq7FoTJf S2JnSbIptgJDY1EZwRPJDTROktfu5zy25oydmSHB6a4oZetV5mI3s 0R7vW8I0S9d765RHdYU2xkRuojHYZU= 

正如你可以看到這兩個字符串是不同的。

我認爲這是該對象的字符串轉換,但這個似乎沒有這樣的情況導致對象的值轉換前的省略「+」。

可以做些什麼來避免這種字符替換(我想盡量避免字符串操作)

還什麼能這樣做的原因是什麼?

回答

0

可以使用得到查詢字符串以下方法

string strQuery = Request.Url.Query; 
+0

將如何與多個查詢字符串這項工作。我再次嘗試避免字符串操作。 – SpaceApple

+0

你是什麼意思說多個查詢字符串? –

1

您可以使用

MyUrl = MyUrl.Replace("+",@"%2B"); 

的問題是「+」字符被轉換,如果你使用的HttpRequest到空格。如果將其轉換爲十六進制值,則可以毫無問題地傳遞它。

1

您應該使用HttpUtility.UrlEncode生成你的參數值。目前看來你使用的base64編碼對於查詢參數不是最優的。

1

使用此:

mt=encodeURIComponent(mt);//if mt be --> jan1TNIixxA1+8tl/0vLLg2PPGq0vMOLEhFQNuG4AJU12VMZpnWTrgar82K5UlXatQT9E9EAUet+q7rq7FoTJf+S2JnSbIptgJDY1EZwRPJDTROktfu5zy25oydmSHB6a4oZetV5mI3s+0R7vW8I0S9d765RHdYU2xkRuojHYZU= 
Response.Redirect("Test.aspx?"+mt); 

這將編碼您的網址並在此之後「+」將轉換爲「%2B」,如果你想讀編碼的URL也不會轉換爲空間。

here

1

如果是真的所以重要,以避免更改,當您發送它的字符串,您可以在您從HttpRequest都有IR滻它。也許你可以使用:

MyUrl = (Request["mt"].Replace(" ","+")); 

有沒有可能通過在URL中的空間,所以當你有一個空間,你可以肯定的是有「+」在那裏了。