【问题标题】:QueryString not accepting & - Needs toQueryString 不接受 & - 需要
【发布时间】:2012-08-23 15:32:01
【问题描述】:

我需要能够在我的 .Net 代码中处理 HTML 编码的 & 符号。

所以网址是

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

没有办法改变它,因为它是由其他东西生成的,所以这是我无法控制的。

如何读取 Refresh 参数?

我试过了

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

但我的 Request.QueryString("Refresh") 实际上是空的,所以这是没有意义的,Uri.EscapeDataString 也是如此。

这不是第一次发生这种情况,但我正在努力寻找解决方案,因为大多数人会说使用 UrlEncoding,但正如我所说,Url 超出了我的控制范围。

【问题讨论】:

    标签: asp.net .net vb.net request.querystring


    【解决方案1】:

    您的查询字符串中的& 应为%26

    由于您无法更正网址。

    您可以将刷新值读取为:

    Request.QueryString("amp;Refresh");
    

    请注意,您正在使用的服务的开发人员将来可能会更正此问题。 最好已经为此做好准备。

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

    【讨论】:

    • 如此简单!我不知道为什么我没有想到它
    • 我认为 %26 不是他的示例的正确解决方案,这将允许您将“&”符号编码到您的参数值中,即,因此您可以有一个参数,例如“?name=bob&jill”通过执行“?name=bob%26jill”。 url 首先应该有一个“&”符号分隔参数。不过,使用“amp;Refresh”对他来说是一个很好的解决方案!
    【解决方案2】:

    nunespascal 的回答几乎可以解决您的问题。还有一些替代方法。

    如果它保证您的 Refresh 参数是 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      相关资源
      最近更新 更多