【问题标题】:QueryString drops all but one field-value pairQueryString 删除除一个字段值对之外的所有字段
【发布时间】:2014-05-21 01:44:42
【问题描述】:

万事如意。

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

问题来了。

我有一个网站 (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>

现在,当它们被发送到各自的浏览器时,查询字符串会完美显示。然而,当他们登录时,它会删除尾随的查询字符串,在地址栏中只留下“www.example.com/test?user=ID”。

关于如何保留尾随查询字符串的任何想法?或者什么可能导致这种情况?网站代码明确指出要重定向到指定的 url - 它“有点”这样做。

背后的VB代码:

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

看,很简单……但我遇到了这个问题,这让我很恼火,它可能是如此简单。

为任何帮助干杯。

编辑:

对于可能遇到此问题并发现 URL 编码不起作用的任何人 - 使用类似于 @Frank_Vr 发布的 here 的小功能提取完整字符串后尝试 URL 解码。现在对我来说就像一个魅力。为 Moose 先生和 Frank_Vr 先生干杯!

【问题讨论】:

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


    【解决方案1】:

    最好对查询字符串进行编码。

    查看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);
        }             
    }
    

    【讨论】:

    • 非常感谢,我已经阅读了 MSDN 文档,这似乎正是我所需要的。感谢您的帮助!
    • 没有问题。很高兴它对您有所帮助。
    【解决方案2】:

    问号表示查询字符串的开始,第一个参数之后的所有参数都用“&”分隔。你有两个问号,这导致查询字符串解析器给你一个不正确的数组。

    【讨论】:

    • 完全省略了第二个问号!感谢您指出了这一点。但是我在查询字符串中确实需要它 - 但它解决了为什么查询字符串删除最后一个字段值对的答案!干杯! +1
    【解决方案3】:

    因为您有两个问号,所以 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
    

    【讨论】:

    • 我首先尝试了这个,不幸的是我碰到了一个巨大的头块,无法将它的其余部分作为 URL。无论如何都为帮助干杯,非常感谢! +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多