在ASP.NET中使用URLreferer管理查询字符串

在ASP.NET中使用URLreferer管理查询字符串,asp.net,vb.net,url,query-string,response.redirect,Asp.net,Vb.net,Url,Query String,Response.redirect,VB.NET Response.Redirect(Request.UrlReferrer.AbsolutePath & "?query=1") 这是一个如何导航到URLreferer并包含新查询字符串的工作示例 问题 当UrlReferer包含现有查询字符串时,呈现的标记将变为: url.aspx?existing=1?query=1 url解析不正确,因为第二个?应该是& 问题 If (Request.UrlReferrer.OriginalString.Contains(

VB.NET

Response.Redirect(Request.UrlReferrer.AbsolutePath & "?query=1")
这是一个如何导航到URLreferer并包含新查询字符串的工作示例

问题

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

url.aspx?existing=1?query=1
url解析不正确,因为第二个应该是&

问题

    If (Request.UrlReferrer.OriginalString.Contains("?")) Then
      Response.Redirect(Request.UrlReferrer.OriginalString & "&query=1")
    Else
      Response.Redirect(Request.UrlReferrer.OriginalString & "?query=1")
    End If
如何确定URLreferer是否已经有querystring并实现正确的代码来适应

解决方案

    If (Request.UrlReferrer.OriginalString.Contains("?")) Then
      Response.Redirect(Request.UrlReferrer.OriginalString & "&query=1")
    Else
      Response.Redirect(Request.UrlReferrer.OriginalString & "?query=1")
    End If
绝对URL不包括查询字符串使用OrigionalString作为引用。一点逻辑:

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

您可以检查一下是否有问题?在de Request.urlReferer.AbsolutePath中:

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

我确实考虑过这种明显的方法,但是我担心URL可能包含A?不是从查询字符串派生的。你的想法是什么?即使在镶嵌的绳子里?无论哪种方式aspx?将100%工作,谢谢。你不会对URI进行编码/加密,你会对querystring参数进行编码/加密。修复了该问题,但必须使用OriginalString而不是绝对Url来保持querystring的完整性。谢谢你的帮助。那就投我一票吧?:)