ASP.NET POSTで値を別画面に渡す(VB.NET)

ASP.NETとVB.NETでフォームの値を別画面に渡すサンプルです。

確認環境
・Microsoft Visual Studio Community 2019

目次

目的 POSTで値を別画面で渡す
サンプル フォーム
  ビュー
  コントローラ
参考 画面表示の流れ

POSTで値を別画面で渡す

テキストに文字を入力し、「ボタン」を押すと、別の画面で入力した値が表示されます。

フォーム

フォームです。画面で入力した値を保持します。ファイル名はActionForm1.vbです。

Public Class ActionForm1

	Public Property text1 As String

End Class

3行目は、テキストの値を代入する変数(プロパティ)です。
データ型は、String型です。

ビュー

値を送信する側

値を送信する側です。ファイル名はindex.vbhtmlです。

@ModelType new0901.ActionForm1
@Code
		Layout = Nothing
End Code
<!DOCTYPE html>
<html>
<head>
</head>
<body>
	@Using Html.BeginForm("Display1", "Test1", FormMethod.Post, New With {.id = "form1"})
		@Html.TextBoxFor(Function(model) model.text1, New With {.maxlength = 5})
		@<input type="submit" id="button1" value="ボタン" />
	End Using
</body>
</html>

10行目は、formです。Display1はアクション名で、Test1はコントローラ名です。
→Test1は、Test1Controllerコントローラの先頭部分の文字を表します。
11行目は、テキストボックスです。画面から文字を入力します。
12行目は、送信ボタンです。ボタンを押すとsubmitします。

HTMLでは、以下のように展開されます。

 

値を受信する側

値を受信する側です。ファイル名はview2.vbhtmlです。

@ModelType new0901.ActionForm1
@Code
		Layout = Nothing
End Code
<!DOCTYPE html>
<html>
<head>
</head>
<body>
	<p>@Model.text1</p>
</body>
</html>

1行目は、ActionForm1と紐づけています。
10行目は、ActionForm1の項目「text1」の値を表示します。

コントローラ

コントローラのクラスです。ファイル名はtest1Controller.vbです。

Namespace Controllers
    Public Class Test1Controller
        Inherits Controller

		' GET: Test1
		Function Index() As ActionResult
			Return View()
		End Function

		'値を受け取って別の画面を表示
		Function Display1(actionform As ActionForm1) As ActionResult

			Return View("view2", actionform)

		End Function
	End Class
End Namespace

6~8行目は、初期表示時のテキストを入力する画面を表示します。
11行目からは、indexの画面でボタンを押したときに実行されます。
引数にActionform1があるのでActionform1と紐付きます。
13行目は、view2の画面を表示します。
引数にactionform(ActionForm1)を指定することでviewに値を渡せます。

画面表示の流れ

画面表示までの流れです。

1.ブラウザでコントローラ(Test1Controller.vb)にアクセスする。
→ビュー1(index.vbhtml)を表示する。

2.ビュー1(index.vbhtml)で値を入力してコントローラ(Test1Controller.vb)に送信する。
→コントローラ(Test1Controller.vb)は、ビュー2(view2.vbhtml)を表示する。

ファイル構造は以下です。

関連の記事

ASP.NET MVCでhello worldを表示する(VB.NET)

△上に戻る