【问题标题】:Get the full QueryString from URL in ASP.NET从 ASP.NET 中的 URL 获取完整的 QueryString
【发布时间】:2012-10-26 13:25:21
【问题描述】:

我有一个格式如下的网址:

http://www.mysite.com/login.aspx?ref=~/Module/MyPage.aspx?par=1&par2=hello&par3=7

我使用QueryString的内容将Redirect用户返回到他登录前的页面。为了保持页面的状态,我需要QueryString中的参数。参数数量根据Page调用Login及其状态而变化。

假设我想在ref 之后的URL 中存储redirectURL 变量中的所有内容。我试过了:

 redirectURL = Request.QueryString("ref") // "~/Module/MyPage.aspx?par=1" 

它获取ref 之后的所有内容,但忽略&(包括)之后的所有内容。如果我使用:

 redirectURL =Request.Url.Query // "ref=~/Module/MyPage.aspx?par=1&par2=hello&par3=7"

它得到了一切,包括ref。为了实现我的目标,我只需要从 redirectURL 中删除前 4 个字符。但我觉得这个解决方案有点“强迫”,我相信应该有一些 ASP.NET 函数来完成这个任务。

【问题讨论】:

    标签: asp.net url query-string


    【解决方案1】:

    在将“~/Module/MyPage.aspx?par=1&par2=hello&par3=7”传递给 url 之前考虑对其进行编码。

    例如:

    String MyURL = "http://www.mysite.com/login.aspx?ref=" + 
                    Server.UrlEncode("~/Module/MyPage.aspx?par=1&par2=hello&par3=7");
    

    然后,您可以使用以下方法获取redirectURL:

    String redirectURL = Request.QueryString("ref");
    

    【讨论】:

      【解决方案2】:

      您 URL 中的 &s 正在创建额外的查询字符串参数。

      您需要在将ref 参数的值放入查询字符串之前对其进行转义。
      这会将&s 替换为%26
      为此,请致电Uri.EscapeDataString()

      当您从Request.QueryString 获取属性时,它会自动对其进行解码。

      【讨论】:

        猜你喜欢
        • 2017-07-09
        • 2017-04-22
        • 1970-01-01
        • 2012-05-31
        • 2017-05-11
        • 1970-01-01
        • 2011-10-09
        • 2011-01-05
        相关资源
        最近更新 更多