【T3b】POSTを処理する(2/5)
プロジェクトタイプ | ASP.NET Core (空) |
---|---|
プロジェクト名 | T3b |
ソリューション名 | PIT3 |
ターゲットフレームワーク | .NET 8.0(長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用する(チェックオフ) |
3b-2. 準備作業
ウェブページ上でフォームからの送信は,GETリクエストではなくPOSTリクエストによって行われる. 実際にこのことを確認してみよう.
このためには,まずはフォームからデータの送信するためのページと,そのデータを受け取って 処理するプログラムを用意する必要があるが,これに関しても私たちは 【T1c】ASP.NET Core MVCで一通りのことを試している. 今回はこれを応用することにしよう.
「ASP.NET Core (空)」タイプのプロジェクトを作成し,
上表に示すように,プロジェクト名はT3b
とする.
ターゲットフレームワークとして「.NET 8.0(長期的なサポート)」を選択し,
「HTTPS用の構成」のチェックを外すこと,また「最上位レベルのステートメントを使用しない」にチェックが入っていない ことを確認しよう.
プロジェクトを ASP.NET Core MVC アプリとして構成するように Program.cs を編集し(リスト1c-3-1), Controllers フォルダ,Views フォルダを作成することころまでは【T1c】ASP.NET Core MVCと同じである.
最初に新たなコントローラーを作成しよう.今回はHoge
という名前のコントローラーを作成することにする( Home
ではない ので注意せよ).
Controllersフォルダを右クリックして,「追加」→「コントローラー」をクリックする.
「MVCコントローラー - 空」を選択して,名前にHogeController
(末尾の .cs は省略可)と指定する.すると Controllers/HogeController.cs が作られるので,
_に示す通りに記述しよう.強調部分は自分で記述しなければならない部分である.
|
|
HogeController
クラスには,Index()
とDumpPost()
の二つのアクションメソッドを定義している.
今回は各々にビューを用意しよう.Index()
アクションでは単純にフォームを表示し,
DumpPost()
アクションではそのフォームからの送信を受け取ることにする.
まずはIndex()
アクションのためのビューを作成しよう.Views フォルダにコントローラー名と同じ名前のフォルダを作成し,
これを右クリックして,「追加」→「ビュー」をクリックして「Razorビュー」を選択する(「Razorビュー - 空」ではないことに注意).
表示されたダイアログで「ビュー名」にIndex
と入力して「レイアウトページを使用する」のチェックは外して「追加」をクリックする.
これによって Views/Hoge/Index.cshtml が追加されるので,_の通りに記述する.
強調部分は自分で記述しなければならない部分である.
|
|
_の②と③の部分ではそれぞれfoo
,bar
と名前を付けたデータのための入力欄を作成している.
ちなみに@*
から*@
までの部分はRazor文法(.cshtml)におけるソースコードのコメントである.
C#でいえば/*
~*/
のスタイルのコメントに相当する.
フォームの送信先は_の①の行のように, form 要素の action 属性によって指定する.
method 属性はHTTPのリクエストのメソッドを指定する.何も指定しなかった場合はPOSTメソッドが使用されるので,
通常は書く必要はないが,ここでは分かりやすさのために記述している.
これによって,このフォームの送信ボタン(_の④)を押したときに,
http://localhost:
に対してPOSTリクエストが発生することになる.ポート番号
/Hoge/DumpPost
次に先ほどと同じ手順でDumpPost()
アクションのためのビューも作成しよう.
作成されたビュー Views/Hoge/DumpPost.cshtml に,_に示す内容を記述する.
強調部分は自分で記述しなければならない部分である.
|
|
_の①は単に表示結果のページを見やすくするためのスタイルの指定である. ここでは表の境界線や見出し行の表示方法を指定している.
_の②では,フォームから送信されたデータに含まれていた「キーと値」の組を表組みとして表示している.
ここでいう「キー」とは入力欄につけられた名前―つまり input要素のname属性 のことであり,「値」とはそのinput要素に入力された
入力値のことである.ここでは_の15行目付近で,フォームに含まれていたデータをViewData
に移し替えたのでこれを読み出している.
ここまで書けたら,スタートアッププロジェクトをこのプロジェクト( T3b )に変更し,
アプリケーションの実行環境として http が選択されていることと,表示に使用するウェブブラウザとして Firefox が選択されていることを確認して実行する.
ウェブブラウザが起動したらアドレスバーのURLの末尾を /Hoge/Index
に変更して,Hoge
コントローラーの
Index
アクションにアクセスしてみよう._のように表示されるはずである.
「入力値1」「入力値2」にそれぞれ適当な文字列を入力して「送信」ボタンを押してみよう.
_のように表示されるはずである.
Visual Studio のデバッグ実行は停止せずに,かつ/Hoge/Index
をウェブブラウザに表示させたままの状態で次に進むこと.