QueryString删除除一个字段值对之外的所有字段

时间:2014-05-21 01:44:42

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

G'所有。

遇到一些问题,我似乎无法找到任何解决方案。我已经搜索过,甚至重新阅读维基百科上的查询字符串文章,并重新查询查询字符串的结构无济于事。

这是问题所在。

我有一个网站(www.example.com),我的计算机上有一个应用程序,它运行在带有Outlook邮件服务器的网络上。该应用程序在单击按钮时会向所有选定的各方发送电子邮件,其中包含指向该网站的链接以获取是/否选项。所以有两个超链接按钮:

<a href="www.example.com/Login.aspx?r=www.example.com/test?user=ID&selection=yes">YES</a>

<a href="www.example.com/Login.aspx?r=www.example.com/test?user=ID&selection=no">NO</a>

现在当他们被发送到他们各自的浏览器时,查询字符串完全出现了。但是,在他们登录的那一刻,它会删除尾随的查询字符串,只留下&#34; www.example.com/test?user = ID&#34;在地址栏中。

关于如何保留尾随查询字符串的任何想法?或者可能是什么导致了这个?网站代码明确指出要重定向到指定的网址 - 它有哪些&#39;确实

VB代码背后:

    If Not (Request.QueryString("r") Is Nothing) Then
        Response.Redirect(Request.QueryString("r"))
    End If

看,够简单......但是我遇到了这个问题而且让我感到烦恼的是它可能是如此简单。

欢呼任何帮助。

编辑:

对于可能遇到此问题且发现网址编码无效的任何人 - 在使用与@Frank_Vr发布的 here类似的小功能拉完整个字符串后尝试进行网址解码。对我来说就像是一种魅力。欢呼穆斯先生和Frank_Vr!

3 个答案:

答案 0 :(得分:3)

对该查询字符串进行编码是明智的。

请参阅HttpServerUtility.UrlEncode

的示例

以下代码段供快速参考;

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string destinationURL = "http://www.contoso.com/default.aspx?user=test";

        NextPage.NavigateUrl = "~/Finish?url=" + Server.UrlEncode(destinationURL);
    }             
}

答案 1 :(得分:1)

因为您有两个问号,Request.querystring会将其拆分,请尝试使用以下内容:

    Dim url As String = Request.Url.AbsoluteUri
    Dim i As Integer = 0
    Do Until i = url.length
    i = i + 1
    If mid(ucase(url), i, 2) = "R=" Then
     Response.Redirect(mid(URL,i+2)
    End If
    Loop

答案 2 :(得分:1)

问号表示查询字符串的开头,初始查询后的所有参数都由&#39;&#39;分隔。您有两个问号,这会导致查询字符串解析器为您提供不正确的数组。