QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

ASP.NETでHTMLからForm送信(POST)されたデータを受け取る方法

言語:ASP.NET(VB.NET)

Visual Studio2005

久々にどうしてもうまくいかないので質問させていただきました。

今回、他社システムからデータが送られてきて、
それを受け取る事になったのですがうまくいきません。

●方法
HTMLからForm送信されます。MethodはPostです。
引数としてユーザIDを受け取ります。
こちら側はASP.netです。

まず、Form送信するための簡単なHTMLを作成してみました。

-------------------------------------------------------

ユーザコード:

 

------------------------------------------------------

おそらくusercdに入力された値が入ってくると思うので

ASP.net側では

txtUserID.Text = Request.Form("userid")

というふうにしました。

が、NULLが返ってきていてデータが取得できていません。

何かおかしなところがあれば教えて頂ければ嬉しいです。

どうかよろしくお願い致します。

質問者:初心者

回答

Request.Form("usercd") じゃ?

idとcdのタイプをミスっているように見えます。

投稿者:どっとねっとふぁん

編集 履歴 (0)

お返事ありがとうございます!

すみません、こちらは入力ミスです・・・。

実際は

Request.Form("usercd")

にしています。

よろしくお願いします。

投稿者:初心者

編集 履歴 (0)


■送信元
<body>
    <form method="post" action="default1.aspx"> 
<p> 
ユーザコード:<input type="text" name="usercd" />

<input type="submit" value="送信" />  
</p> 
</form> 

</body>

■受取先
Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load
        Dim UserCD As String
        UserCD = Request.Form("usercd")
End Sub

書かれているソースで問題なく取得出来るきが。

投稿者:ごん太

編集 履歴 (0)

ごん太さんへ

お返事ありがとうございます。

本当に、どこに問題があるのかさっぱり分からない状態です・・・

何かセキュリティの問題か、web.configの問題か・・・

もう少し調べてみたいと思います。

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

投稿者:初心者

編集 履歴 (0)

はずしていると思いますが、Form送信するための簡単なHTMLの


id="usercd"を追加して以下のようにしたらできませんか?

投稿者:Katze

編集 履歴 (0)

Katzeさんへ

お返事ありがとうございます!

さっそく教えて頂いた通り試してみたのですが、

残念ながらうまくいきませんでした・・・

ありがとうございました!

投稿者:初心者

編集 履歴 (0)

初心者さんの書き込み (2009-04-06 16:06) より:

txtUserID.Text = Request.Form("userid")

というふうにしました。

が、NULLが返ってきていてデータが取得できていません。

こんにちは。回答ではないですが、

確認方法はどのように行っていますか?

デバッグで確認しているのですか?

それとも、HTMLか何かに吐き出して確認しているのですか?

また、どのイベントで確認していますか?

蛇足ですが、IISのログやアプリケーションログに何か出ていませんか?
(セキュリティ系なら何かでてるかも)

質問攻めでごめんなさい。わかる範囲でお答えいただければ、切り分けになるかも。

投稿者:セラフ

編集 履歴 (0)

turutosiyaさんへ

お返事ありがとうございます。

試してみたのですが・・・

駄目でした・・・(;
なんだかもう無理な気がしてきました・・・

ありがとうございました!

投稿者:初心者

編集 履歴 (0)

気になる点をいくつか・・・。

○「NULLが返ってきていて」とありますが VB に NULL はありません。
 実際は何が返ってきているのでしょうか?

○「NULLが返ってきていて」と判断した根拠は何でしょうか?
 txtUserID.Text に何も表示されないからなのか、
 デバッグポイントを指定して Request.Form("userid") の中身を
 ウォッチ式で見た結果なのか。

○ Response.Redirect した先で Request.Form してる訳ではないですよね?

投稿者:King

編集 履歴 (0)

セラフさんへ

お返事ありがとうございます!

確認方法なんですが、 デバッグはできないので、

HTMLからASP.netを呼び出した時に、ASP.netで作成した

ユーザーコード用のテキストにセットするようにしてるので、

そこで確認しています。何もセットされていないので

NULLで返ってきてるのかなと思いました。

IISのログの見方が分からなかったので確認できていないのですが、
アプリケーションログには何も出ていませんでした。

分かる範囲ですみません・・・。

よろしくお願いします。

ありがとうございました!

投稿者:初心者

編集 履歴 (0)

Kingさんへ

お返事ありがとうございます!

確かにVBはNULLだとエラーになりますね!
Page_Loadのイベントのところで
txtUser.Text = Request("userid")
としていて、txtUser.Textに入力したユーザーIDが
セットされていないので何も値が返ってきていないと思ってました。
メッセージボックスでRequest("userid")の値を表示してみても
やっぱり何も表示されていなかったです・・・
デバッグはできないので、してないです。

○ Response.Redirect っていうのはどういうことでしょうか??
知識が少なくてすみません・・・

よろしくお願い致します!

投稿者:初心者

編集 履歴 (0)

Request("userid")

Request("usercd")

なのでは???


Toshiya Tsuru
http://d.hatena.ne.jp/turutosiya/
[ メッセージ編集済み 編集者: turutosiya 編集日時 2009-04-06 18:28 ]

投稿者:turutosiya

編集 履歴 (0)

turutosiyaさんへ

お返事ありがとうございます。

すみません、また間違ってますね。

実際はuseridを使用していて、例としてusercd
と書かせていただいので・・・

変数名の間違いはないです。

ご指摘ありがとうございました!

投稿者:初心者

編集 履歴 (0)

この辺の記事を参考に何が起きているのか調査するとよいかも。

ページのトレース情報を出力するには?

ちなみに、「ユーザーコード用のテキストにセットするようにしてるので、」
とありますが、本当にそのURLにアクセス来てますか?
そのユーザーコード用のテキストファイルの更新日付とか変わってますか?

実はアクセス来てると思ったけど、思い込みだった・・・なんて事はないですよね?
[ メッセージ編集済み 編集者: セラフ 編集日時 2009-04-06 19:21 ]

投稿者:セラフ

編集 履歴 (0)

初心者さんの書き込み (2009-04-06 18:15) より:

確認方法なんですが、 デバッグはできないので、

HTMLからASP.netを呼び出した時に、ASP.netで作成した

ユーザーコード用のテキストにセットするようにしてるので、

そこで確認しています。

別に簡単なHTMLファイルを作成して、そこからVS2005で作成したフォームを呼び出しているのでデバックが出来ないとの事ですが、そのHTMLファイルをVS2005の同じプロジェクトに作成すればブレークポイントで何が入っているか把握できますよね?

投稿者:ごん太

編集 履歴 (0)

セルフさんへ

お返事ありがとうございます。

ページのトレースを参考にしてみたいと思います。

「ユーザーコード用のテキストにセットするようにしてるので、」
→URLにアクセス来ています。
テキストファイルではなく単なるテキストに表示するようにしているので
間違いないと思います。

投稿者:初心者

編集 履歴 (0)

ごん太さんへ

お返事ありがとうございます。

教えて頂いた通り、簡単なHTMLファイルを作成して、VS2005で作成したフォームを呼び出してデバックしてみました。そしたらなんと値が返ってきました!!
でも、ASP.net内に作成したHTMLからだとうまくいったのに、
デスクトップに作成したHTMLからだと中身は同じなのにやっぱりうまくいきません・・・。
ただ、気になるのが、HTMLでアドレス指定するactionのところで、
デバッグ時は「hogehoge.ASPX」としたのを
普段は「http〜IPアドレス〜hogehoge.aspx」としています。
この違いに何か問題があるのかもしれません・・・
IPアドレス指定だと駄目なんでしょうか・・・

投稿者:初心者

編集 履歴 (0)

初心者さんの書き込み (2009-04-07 09:58) より:

IPアドレス指定だと駄目なんでしょうか・・・

IPアドレスを指定しても問題ありません。

確認ですが、HTMLファイルからIPアドレスでみている先のASPXファイルは最新のファイルでしょうか?
もしかして、参照先のASPXファイルが置き換わっていないとか。。。

投稿者:ごん太

編集 履歴 (0)

ごん太さんへ

何度もお返事ありがとうございます。

IPアドレスでみている先のASPXファイルは最新のものでした。
日付を確認しましたが、今日発行したものになってました。

ますます原因不明です・・・

投稿者:初心者

編集 履歴 (0)

デスクトップに置いてあるHTMLから動作を確認しようとしてるんですよね?
試したことありませんが、セキュリティ的な制限がかかってたりしそうな気もします。

IISとかのWebサーバ上にHTMLを置いて、そのうえで動作を確認してみたほうがいいと思います。

投稿者:どっとねっとふぁん

編集 履歴 (0)

どっとねっとふぁんさんへ

お返事ありがとうございます。

さっそく教えて頂いた通りHTMLを別の場所に置いて実行してみたんですが、
結果は同じで駄目でした・・・(;
アドバイスありがとうございました!

投稿者:初心者

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。