アプリ版:「スタンプのみでお礼する」機能のリリースについて

ASP.NET(VB)で開発をしております。

親画面のjavascriptのwindow.openで子画面を開く際に、
パラメータ「?xxx=123+456」を渡しています。

子画面側のサーバ処理のRequest.Params("xxx")で
パラメタを取得すると「+」が消えてしまい、
「123 456」となってしまっています。

子画面のURLにはちゃんと「?xxx=123+456」と表示されているので、
Request.Params("xxx")で取得する際に、
「+」がスペースに変換されてしまっているのだと思うのですが、
ネットで調べても同様の事象は見つけられませんでした。

これはASPのRequestクラスの仕様なのでしょうか?
また対応策などご存知お方、ご教授いただけますでしょうか。
よろしくお願いします。

以下コードです。
【親画面】
window.open("./child.aspx?xxx=123+456","test","");

【子画面 (child.aspx)】
Dim xxx As String = Request.Params("xxx")
'↑xxx = "123 456"となってしまいます。

A 回答 (2件)

> パラメタを取得すると「+」が消えてしまい、


> 「123 456」となってしまっています。

URLエンコードされていないからです。
渡すときに.NET側で"123+456"にHttpUtility.UrlEncode メソッドを噛ませて渡し、
取得するときににHttpUtility.UrlDecodeメソッドを噛ませて取得してください。

こんな感じです。

'URLを渡すとき
Dim sQueryString As String = "?xxx=" & HttpUtility.UrlEncode("123+456")

'URLから取得するとき
Dim sXXX As String = HttpUtility.UrlDecode(Me.Request.QueryString("xxx"))
    • good
    • 0
この回答へのお礼

教えて頂いたとおり、URLのエンコードでできました。

URLの知識不足でした。勉強しておきます。

回答ありがとうございました。

お礼日時:2007/06/11 17:12

未経験です。


http://www.studyinghttp.net/uri
多分それはASPの仕様じゃなくてURIの仕様。
検証はしていませんが
window.open("./child.aspx?xxx=123+456","test","");
window.open("./child.aspx?xxx=123%25456","test","");
だとどうなりますか?

この回答への補足

結果「123%456」でした。

URIの仕様ですか。ちょっと教えていただいたサイトを見てみます。

回答ありがとうございました。

補足日時:2007/06/11 16:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!