1

我有一个格式如下的 URL:

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

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

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

 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 函数来完成这个任务。

4

2 回答 2

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");
于 2012-11-06T14:59:37.350 回答
1

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

您需要先转义ref参数的值,然后再将其放入查询字符串。
这会将&s替换为%26
为此,请调用Uri.EscapeDataString().

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

于 2012-11-06T15:00:04.133 回答