質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

5319閲覧

【VB.NET】HTMLでPOSTされた値をVB.NETのWEBフォームで受け取りたい

quail

総合スコア7

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/10/23 06:56

編集2017/10/23 07:40

HTMLでPOSTされた値をVB.NETで作成したWEBフォームで受け取りたいのですが、
VB.NET側のRequest.FormでNothingとなり値を受け取ることができません。
原因を調べているのですが、なかなか解決できず困っています。
どなたか分かられる方がいらっしゃいましたら、お力をお借り出来ると幸いです。

何卒よろしくお願いします。

1.環境
OS:Windows 2012 R2
IIS:IIS8.5
開発環境:Visual Studio Enterprise 2015
VB.NET
ブラウザ:IE11

2.使用ロジック
※本来はtest.htmlとDefault.aspxは別プロジェクトなのですが、
デバッグするために一旦同じプロジェクトにしています。
◆test.html◆ ⇒ このページで値をPOSTします。

<HTML> <head> <meta http-equiv="Content-Type" content="text/html; charset=s-jis" /> </head> <BODY> <FORM METHOD="post" ACTION="http://test_srv:99/test/Default.aspx"> <p>ユーザID:<input type="text" name="USERID" /></p> <p><input type="submit" value="実行" /></p> </FORM> </BODY> </HTML>

 ◆Default.aspx◆ ⇒ このページでtest.htmlからpostされた値を受け取ります。

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="test._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=s-jis"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>

 ◆Default.aspx.vb◆

Public Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load If Request.Form("USERID") IsNot Nothing Then ← ここでNothingになります。 Session("USERID") = Request.Form("G_EMPID").ToString End If Response.Redirect("next.aspx") End Sub End Class

3.確認したこと
(1)IEの開発者ツールの[ネットワーク]-[詳細]-[要求本文]にて、値がtest.htmlから値が送信されていることを確認しました。
「USERID=値」と表示されていました。
(2)test.htmlのFORMタグ内のMETHODをGETに変更した場合、Default.aspx.vbでRequest.QueryStringで値を取得できました。
(3)WindowsイベントログやIISログを確認したのですが、エラーコードは出力されていませんでした。

説明不足な部分や分かりずらい内容が合った場合は、
ご指摘頂けると幸いです。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/23 07:38

ASP.NET のタグをつけていただけませんか。
quail

2017/10/23 07:41

ご指摘ありがとうございます。タグを追加しました。
guest

回答2

0

自己解決

最初から作り直してみました。
今回は、既に作成されているテンプレートを選択せずに、
「空のテンプレート」を選択後に必要に応じて自分で追加する方法をとりました。
※作成手順:[新規作成]-[プロジェクト]-[ASP.NET Webアプリケーション]
※選択したテンプレート:Empty
※追加した項目:HTMLページ、Webフォーム、LINQ to SQLクラス
※項目を追加した際に、コードは前回作成したものをコピー&ペーストで使用しています。
※その他の環境(IISやデータベース、OS上の設定など)は変更していません。

作成し直した結果、無事にRequest.Formで値を取得することができました。
この結果を受け、Visual Studioで作成したプロジェクト内の項目が何かしら影響を与えてたのかなと思います。
※前回は[ASP.NET Web アプリケーション]-[Web Forms]テンプレートを使用していました。
ただ、「どの項目が影響を与えていたのか」という部分は分かっていません。。。。

IEの開発者ツールのCookieで、下記のような違いがありました。

方向キー有効期限
前回送信XSLTListViewWebPartShowRibbon1
今回送信XSLTListViewWebPartShowRibbon1
受信ASP.NET_SessionId5dcesar5mj0yuojwqwxmlot2セッションの終わり

※今回は、「受信」が増えていました。

XSLTListViewWebPartを調べてみたのですが、
SharePointで使用するクラスみたいです。
※「XSLTListViewWebPartShowRibbon」ではネット上で情報がヒットしませんでした。
たしかに今回の環境にはSharePoint2016はインストールされていました。
もしかして、その影響があるのか・・・・・
(きっと無いとは思いますが・・・・)

ちゃんとした原因報告にならず、すみません。。。
同じような現象にあった方のお力に少しでもなれば幸いです。

投稿2017/10/24 01:59

quail

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自分が試した限りでは取得できました。

自分はここには画像が貼れないので自分が使っているレンタルサーバーにアップしましたので見てください。

http://surferonwww.info/BlogEngine/image.axd?picture=2017%2f10%2fresult.jpg

html のページは ACTION="/Default2.aspx" とした以外は、質問者さんのコードと全く同じです。

Default2.aspx は出来合いのページを使ったので質問者さんのコードとは違いますが、Page_Load で Request.Form を取得しているところは同じです。

ちなみに環境は以下のとおりです。これらの違いも今回の問題とは関係なさそうです。

OS:Windows 10 Pro
IIS:IIS10(IIS Express ではない)
開発環境:Visual Studio Community 2015
C#
Web サイトプロジェクト
ブラウザ:IE11

何が違うのか、何故質問者さんのケースで取得できないのかは分からないです。質問に書いてない何かが違うのではないかと思うのですが・・・

投稿2017/10/23 08:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quail

2017/10/23 08:28

SurferOnWww 様 検証にお時間を割いて頂き、本当にありがとうございます。 検証して頂いたおかげで、ロジックには問題がないことが分かりました。 ご指摘通り、他の何かが影響している可能性がありそうです。 ※ちなみに、私は[ASP.NET Web アプリケーション]-[Web Forms]でプロジェクトを作成しました。 他に影響がありそうな箇所はないか、今一度確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問