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

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

ただいまの
回答率

90.45%

  • Webサイト

    1310questions

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

  • VB.NET

    1079questions

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

  • ASP.NET

    634questions

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

  • POST

    277questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,872

quail

score 1

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ログを確認したのですが、エラーコードは出力されていませんでした。

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • SurferOnWww

    2017/10/23 16:38

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

    キャンセル

  • quail

    2017/10/23 16:41

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

    キャンセル

回答 2

check解決した方法

0

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

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

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

方向 キー 有効期限
前回 送信 XSLTListViewWebPartShowRibbon 1
今回 送信 XSLTListViewWebPartShowRibbon 1
受信 ASP.NET_SessionId 5dcesar5mj0yuojwqwxmlot2 セッションの終わり

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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 17:28

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

    他に影響がありそうな箇所はないか、今一度確認してみます。

    キャンセル

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

  • ただいまの回答率 90.45%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Webサイト

    1310questions

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

  • VB.NET

    1079questions

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

  • ASP.NET

    634questions

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

  • POST

    277questions

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