DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Response.Redirectに#を入れるとおかしい

環境/言語:[C#.NET]
分類:[ASP.NET]

いつもお世話になっております。
早速質問なのですが

現在Microsoft Visual C#.NET開発環境を使用して
システムを作成しています。

Response.Redirect("index.aspx?key=1#1")

のようにして
リダイレクトされたHTMLファイルのプロパティを見ると
〜index.aspx?key=1#11

となっていました。
何故か#1→#11になってしまいます。
またkeyのRequest.QueryStringで返ってくる値が
1#1と返ってきます。

これを回避する方法はあるのでしょうか?
どなたかご存知の方がいらっしゃればどうかご教授願います。
URLエンコードしてみて下さい。

文字列をURLエンコードするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/212urlencode/urlencode.html
2006/01/13(Fri) 15:14:15 編集(投稿者)

■No14505に返信(trapemiyaさんの記事)
> URLエンコードしてみて下さい。
>
> 文字列をURLエンコードするには?
> http://www.atmarkit.co.jp/fdotnet/dotnettips/212urlencode/urlencode.html

trapemiyaさん、
御回答有難う御座います!

確かに言われて見れば必要なことでしたね(^^;)

strUrl = "index.aspx?key=1#1"
strUrl = HttpUtility.UrlEncode(strUrl);
Response.Redirect(strUrl);

上記の用に再度試してみましたが
今度は「ページが見つかりません」と出てきてしまいました。

エンコードする前と文字列は変えていないのでUrl先は
間違っていないことを確認しています。

恐縮で御座いますが、ご存知でしたら
この件についてご教授願えますでしょうか。
エンコードの文字コードもひっくるめて、以下が参考になるでしょう。

件名:UrlEncodeした文字列を含むURLからRequest.QueryStringで値がうまく取得できない
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20417&forum=7&2

タカさんがうまく行かなかったのは、URL全体をUrlEncodeしてしまい、?もエンコードされてしまったからだと思います。
いずれにしてもこのような場合は、エンコードされたstrUrlをデバッグで確認してみれば、原因がわかったかもしれません。動かないプログラムは、そうやって一つずつ確認していくことで動くようにしてあげます。
今からでも遅くないので、後学のため、strUrlがどのようにエンコードされいて動かないのかを、確認されると良いと思います。
申し訳ありません。
急ぎの仕事だったとはいえ
デバッグもせずに投稿したのはまずいと思いました。

trapemiyaさんの回答を元に解決してみます。
本当に有難う御座いました。
解決した際には、解決方法を投稿致します。
これからもどうぞ宜しくお願い致します。

DOBON.NET | プログラミング道 | プログラミング掲示板