我的网址格式如下:
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函数可以完成这个任务。
答案 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
获取属性时,它会自动对其进行解码。