尝试使用时查询字符串更改。

时间:2017-12-20 19:33:36

标签: c# asp.net query-string

我有一个看起来像这样的查询字符串。 Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%2353411389BBB9577E1FD 然后我有一个回帖看起来像这样的按钮:

protected void btn_Click(object sender, EventArgs e)
{
    string URL = Request.QueryString["s"];
    Response.Redirect("Page2.aspx?s="+URL);
}

但是当我到达第2页时,我在URL中放入的查询字符串将%符号更改为#并且解密失败,因为它在字符串中查找%以将我的所有页面与该解密分开,因此我无法解密改变工作方式我需要知道它为什么会将%变为# 这是它进入Page2.aspx

时的样子

Page2.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X#53411389BBB9577E1FD

4 个答案:

答案 0 :(得分:4)

%23#字符的网址编码代码。如果你看,它实际上用%23代替#,而不只是%。在页面之间传递查询字符串信息时,您需要检查它。

protected void btn_Click(object sender, EventArgs e)
{
    string URL = Request.QueryString["s"];
    Response.Redirect("Page2.aspx?s="+UrlEncode(URL));
}

答案 1 :(得分:3)

如果仔细检查查询字符串,您会发现%不是#,而是%23。这是因为%是转义字符,而%23代表#。您必须使用%转义%25本身:

Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%252353411389BBB9577E1FD

答案 2 :(得分:3)

string URL = Request.QueryString["s"];
        URL = Server.UrlEncode(URL); // This will allow it to keep the %23 
        Response.Redirect("Page2.aspx?s="+URL);

正如你得到的所有答案那样,编码的原因只是确保你告诉它它是一个UrlEncode所以它不会改变它。

答案 3 :(得分:1)

它被翻译为URL Encoded character。请注意,它不仅仅是被替换的百分号,而且还有跟随它的23。如果您查看维基百科页面上列出的表格,您会看到%23#字符。