【问题标题】:Managing querystrings with urlreferrer in ASP.NET在 ASP.NET 中使用 urlreferrer 管理查询字符串
【发布时间】:2014-07-08 22:48:57
【问题描述】:

VB.NET

Response.Redirect(Request.UrlReferrer.AbsolutePath & "?query=1")

这是一个如何导航到 urlreferrer 并包含新查询字符串的工作示例。

问题

当 urlreferrer 包含现有的查询字符串时,呈现的标记变为:

url.aspx?existing=1?query=1

由于第二个 ? 应该是 &

,因此 URL 无法正确解析

问题

如何判断一个 urlreferrer 是否已经有查询字符串并实现正确的代码来适应?

解决方案

    If (Request.UrlReferrer.OriginalString.Contains("?")) Then
      Response.Redirect(Request.UrlReferrer.OriginalString & "&query=1")
    Else
      Response.Redirect(Request.UrlReferrer.OriginalString & "?query=1")
    End If

AbsoluteUrl 不包含查询字符串,使用 OrigionalString 作为引用者。

【问题讨论】:

    标签: asp.net vb.net url query-string response.redirect


    【解决方案1】:

    一点逻辑:

    If Request.UrlReferrer.OriginalString.Contains("?") Then
       ...
    Else
       ...
    End If
    

    【讨论】:

    • 我确实考虑过这种显而易见的方法,但我担心 URL 可能包含 ?不是从查询字符串派生的。你有什么想法?
    • 即使在加密字符串中?无论哪种方式aspx?将 100% 工作,谢谢伙计。
    • 好吧,您不会对 URI 进行编码/加密,而是对查询字符串参数执行此操作。
    • 修复了这个问题,但必须使用 OriginalString 而不是 Absolute Url 来保持查询字符串的完整性。
    • 感谢感谢您的帮助。那么投票给我? :)
    【解决方案2】:

    您可以检查是否有 ?在 de Request.UrlReferrer.AbsolutePath:

    If (Request.UrlReferrer.AbsolutePath.Contains("?")) Then
       Response.Redirect(Request.UrlReferrer.AbsolutePath & "&query=1")
    Else
       Response.Redirect(Request.UrlReferrer.AbsolutePath & "?query=1")
    End If
    

    【讨论】:

      猜你喜欢
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多