2017-12-20 8 views
3

私はこのようなクエリ文字列を持っています。クエリ文字列は、使用しようとすると変更されます。

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

しかし、私は2ページ、私がURLに入れクエリ文字列を取得する場合#と復号化に%記号を変更します。次に Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%2353411389BBB9577E1FD 私はこのようになりますポストバックを持っているボタンを持っています私のすべてのページを分離する文字列の%がその復号化で動作するように見えるので失敗するなぜ私はそれがその%を変更するのか知る必要がある方法を変更できない# これは、 Page2.aspx

Page2.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X#53411389BBB9577E1FD

答えて

4

%23は、#文字のURLエンコードされたコードです。見ていると実際は%23#に置き換えて、%だけではありません。ページ間でクエリ文字列情報を渡すときにチェックする必要があります。

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

そうですよ!私は情報に投票しました。 – Ahmad

1

URL Encoded characterとなります。置き換えられるのはパーセント記号だけではなく、それに続く23です。 Wikipediaのページにある表を見ると、%23#であることがわかります。

+0

右の感謝はそれを見なかった! – Ahmad

3

クエリ文字列を慎重にチェックすると、%#ではなく、%23に置き換えられます。これは、%がエスケープ文字で、%23#を表しているためです。あなたは%25%自体をエスケープする必要があります:あなたがそうなったすべての答えとして

Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%252353411389BBB9577E1FD

+0

はい、ありがとうございます! – Ahmad

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それを伝えることを確認してくださいエンコードされた理由のthats。

+0

これはこのコードを働かせてくれてありがとう! – Ahmad

関連する問題