書籍転載:ASP.NET MVC 5 実践プログラミング
フォームを生成する - BeginFormメソッド[Razor]
<form>要素を生成するには、標準のビューヘルパーとして提供されているBeginFormメソッドが便利だ。その使い方を解説。書籍転載の4本目(基礎編「4-2-1」)。
書籍転載について
本コーナーは、秀和システム発行の書籍『ASP.NET MVC 5 実践プログラミング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。
『ASP.NET MVC 5 実践プログラミング』の詳細や購入は秀和システムのサイトや目次ページをご覧ください。
ご注意
本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。
4-2 フォーム関連のビューヘルパー
まずは、フォーム要素に関係したビューヘルパーからです。標準的なヘルパーの大部分を占めており、具体的には以下のようなものがあります。
メソッド | 概要 |
---|---|
BeginForm | フォームを生成(<form>タグ) |
BeginRouteForm | フォームを生成(<form>タグ。ルートパラメーターで指定可能) |
EndForm | フォームを終了(</form>閉じタグ) |
LabelFor/Label | ラベルを生成 |
TextBoxFor/TextBox | テキストボックスを生成 |
TextAreaFor/TextArea | テキストエリア(複数行テキストボックス)を生成 |
PasswordFor/Password | パスワード入力ボックスを生成 |
HiddenFor/Hidden | 隠しフィールドを生成 |
RadioButtonFor/RadioButton | ラジオボタンを生成 |
CheckBoxFor/CheckBox | チェックボックスを生成 |
DropDownListFor/DropDownList | 選択ボックスを生成 |
EnumDropDownListFor | Enum型をもとに選択ボックスを生成 |
ListBoxFor/ListBox | リストボックスを生成 |
それでは、これらのビューヘルパーについて、用例と共に具体的な使い方を見ていきます。なお、ここからの例では、ほとんどがViewメソッドの呼び出しだけであるため、不要である箇所は、アクションメソッドの記述は割愛します。適宜、対応するアクションメソッドについては、配布サンプルのコードを参照するようにしてください。
4-2-1 フォームを生成する - BeginFormメソッド
<form>要素を生成するためのメソッドです。ここまではusingブロックで<form>開始/終了タグを表す方法について紹介してきましたが、以下のように、終了タグをEndFormメソッドで明示的に出力することもできます。
@Html.BeginForm()
... フォームの内容 ...
@Html.EndForm()
|
using構文とBegin/End構文と、いずれがより良いというものではありませんので、適宜、自分の好みに応じて使い分けると良いでしょう。
また、ここまではBeginFormメソッドに特に引数を指定しないパターンだけを見てきました。この場合、ポスト先は現在のアクションになるのでした。しかし、BeginFormメソッドにはさまざまなオーバーロードが用意されており、ポスト先やHTTPメソッド、その他の属性を指定できます。
【構文】BeginFormメソッド
(1)MvcForm BeginForm([Object routeValues])
(2)MvcForm BeginForm(String actionName, String controllerName [,Object routeValues] [,FormMethod method [,Object htmlAttributes]])
- routeValues:ルートパラメーター
- controllerName:コントローラー名
- htmlAttributes:その他の属性
- actionName:アクション名
- method:HTTPメソッド(GET/POST)
以下は、主な引数を指定した場合の例です。
@using(Html.BeginForm(
"Edit", // アクション名
"Result", // コントローラー名
new { id = "H15A1", charset = "utf8" }, // ルートパラメーター
FormMethod.Post, // HTTP メソッド
new { id="fm", enctype="multipart/form-data" } // その他の属性
)) {
...フォームの内容...
}
|
<form action="/Result/Edit/H15A1?charset=utf8"
enctype="multipart/form-data" id="fm" method="post">
...フォームの内容...
</form>
|
action属性のコントローラー/アクション名は文字列で、その他のルートパラメーターは匿名型の形式で指定します。ルート定義*5に含まれないパラメーターを指定した場合には、パラメーターはクエリー文字列として追加される点に注目してください。
- *5 デフォルトで用意されているDefaultルートについては、2-2-2項も合わせて参照してください。Defaultルートでは、ユーザーパラメーターとしてidが定義されているのでした。
method、action以外の属性は、引数リストの末尾に匿名型の形式で指定します。こちらは、匿名型の代わりにIDictionaryオブジェクト(System.Collections.Generic名前空間)を使うこともできますが、大概は、匿名型の方がシンプルにコードを書けます。
※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
1. ASP.NETの全体像
ASP.NET上で動作するWebアプリケーションフレームワーク「ASP.NET MVC」とは? その全体像と6つの構成要素について紹介する。書籍転載の1本目(導入編「1-1」)。
2. ASP.NET MVCとは?
なぜASP.NET MVCを使うとよいのか? Webフォームの問題点を示し、ASP.NET MVCの特徴とメリットを紹介する。書籍転載の2本目(導入編「1-2」)。
4. 【現在、表示中】≫ フォームを生成する - BeginFormメソッド[Razor]
<form>要素を生成するには、標準のビューヘルパーとして提供されているBeginFormメソッドが便利だ。その使い方を解説。書籍転載の4本目(基礎編「4-2-1」)。
5. ルート定義からフォームを生成する - BeginRouteFormメソッド[Razor]
ポスト先のルートパラメーターを指定した<form>要素を生成できるBeginRouteFormメソッドの使い方を解説。書籍転載の5本目(基礎編「4-2-2」)。