2012-08-29 91 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