从ASP.NET中的URL获取完整的QueryString

时间:2012-11-06 14:57:30

标签: asp.net url query-string

我的网址格式如下:

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

我使用QueryString的内容将Redirect用户返回到登录前的页面。为了保持页面的状态,我需要{中的参数} {1}}。参数数量的变化取决于QueryString调用Page及其状态。

假设我想在Login变量ref之后将所有内容存储在网址中。我试过了:

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" 。为了实现我的目标,我只需要从redirectURL中删除前4个字符。但我认为这个解决方案有点“强制”,我确信应该有一些ASP.NET函数可以完成这个任务。

2 个答案:

答案 0 :(得分:1)

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

例如:

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");

答案 1 :(得分:1)

您网址中的&正在创建其他查询字符串参数。

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

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