2012-08-29 86 views
3

我需要能夠處理在我的.Net代碼中的HTML編碼符號。QueryString不接受& - 需要

所以鏈接

http://myite.com/index.aspx?language=en&Refresh=true 

沒有辦法,因爲它已經被別的東西產生這種變化的,所以這是在我的掌握。

如何讀取刷新參數?

我已經試過

HttpUtility.UrlDecode(Request.QueryString("Refresh")) 

但我的Request.QueryString( 「刷新」)實際上是空的,所以這是沒有意義的,因爲是Uri.EscapeDataString。

這不可能是第一次發生這種情況,但我正在努力尋找解決方案,因爲大多數人會說使用UrlEncoding,但正如我所說的,Url不在我的控制之下。

回答

6

&你的查詢字符串應該是%26

由於您無法更正網址。

您可以閱讀刷新值:

Request.QueryString("amp;Refresh"); 

請注意,您使用的是未來可能會糾正這種服務的開發商。 這將是很好的準備,已經。

var refresh = Request.QueryString("amp;Refresh"); 
if(String.IsNullOrEmpty(refresh)) 
    refresh = Request.QueryString("Refresh"); 
+0

太簡單了!我不知道爲什麼我沒有想到它 – stuartdotnet

+0

我不認爲%26是他的例子的正確解決方案,它可以讓你在參數值中編碼一個「&」符號,也就是說,通過做「?name = bob%26jill」可以有一個參數,例如「?name = bob&jill」。該網址應該有一個「&」符號來分隔參數。雖然他使用「放大器;刷新」的好解決方案! –

0

nunespascal答案几乎可以解決您的問題。有一些替代方法。

如果它保證你的刷新參數是QueryStringCollection第二個鍵,那麼你可以使用Request.QueryString(1)

另一種方法是在QueryStringCollection做一個Contains

If Request.QueryString IsNot Nothing AndAlso Request.QueryString.AllKeys.Count() > 0 Then 
    Dim refreshKey = Request.QueryString.AllKeys.FirstOrDefault(Function(nv) nv.Contains("Refresh")) 
    If refreshKey IsNot Nothing Then 
     Dim refreshValue = Request.QueryString(refreshKey) 
    End If 
End If