ASP.NETとVB.NETでフォームの値を別画面に渡すサンプルです。
(確認環境:Microsoft Visual Studio Community 2019)
目次
| サンプル | 画面表示までの流れ |
| 画面で入力した値を保持する(フォーム) | |
| 画面を表示する(ビュー) | |
| 画面遷移を制御する(コントローラ) |
画面表示までの流れ
画面表示の流れは、以下のとおりです。
1.ブラウザでコントローラ(Test1Controller.vb)にアクセスする。
2.コントローラがビュー1(index.vbhtml)を返す。
3.ビュー1で値を入力しコントローラにアクセスする。
4.コントローラがビュー2(view2.vbhtml)を返す。
コントローラは、アクセスするURLに従ってファイルを返します。
画面イメージ

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

test1フォルダを作成しその中にvbhtmlファイルを配置します。
画面で入力した値を保持する(フォーム)
画面で入力した値を保持します。ファイル名はActionForm1.vbです。
Public Class ActionForm1
Public Property text1 As String
End Class
3行目は、テキストの値を代入する変数(プロパティ)です。
データ型は、String型です。
画面を表示する(ビュー)
値を送信する側
| Public Shared Function BeginForm(アクション名, コントローラ名, メソッド, htmlの属性) As MvcForm |
ファイル名は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に値を渡せます。
関連の記事
