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)を表示する。
ファイル構造は以下です。
関連の記事