Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
書籍転載:ASP.NET MVC 5 実践プログラミング

書籍転載:ASP.NET MVC 5 実践プログラミング

フォームを生成する - BeginFormメソッド[Razor]

2014年10月1日

<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>閉じタグ)
LabelForLabel ラベルを生成
TextBoxForTextBox テキストボックスを生成
TextAreaForTextArea テキストエリア(複数行テキストボックス)を生成
PasswordForPassword パスワード入力ボックスを生成
HiddenForHidden 隠しフィールドを生成
RadioButtonForRadioButton ラジオボタンを生成
CheckBoxForCheckBox チェックボックスを生成
DropDownListForDropDownList 選択ボックスを生成
EnumDropDownListFor Enum型をもとに選択ボックスを生成
ListBoxForListBox リストボックスを生成
表4-1 フォーム関連のビューヘルパー

 それでは、これらのビューヘルパーについて、用例と共に具体的な使い方を見ていきます。なお、ここからの例では、ほとんどがViewメソッドの呼び出しだけであるため、不要である箇所は、アクションメソッドの記述は割愛します。適宜、対応するアクションメソッドについては、配布サンプルのコードを参照するようにしてください。

4-2-1 フォームを生成する - BeginFormメソッド

 <form>要素を生成するためのメソッドです。ここまではusingブロックで<form>開始/終了タグを表す方法について紹介してきましたが、以下のように、終了タグをEndFormメソッドで明示的に出力することもできます。

Razor
@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)

 以下は、主な引数を指定した場合の例です。

Razor
@using(Html.BeginForm(
  "Edit",      // アクション名
  "Result",    // コントローラー名
  new { id = "H15A1", charset = "utf8" },        // ルートパラメーター
  FormMethod.Post,                               // HTTP メソッド
  new { id="fm", enctype="multipart/form-data" } // その他の属性
)) {
  ...フォームの内容...
}
リスト4-1 Views/View/Index.cshtml
HTML
<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]を参照してください。

書籍転載:ASP.NET MVC 5 実践プログラミング
1. ASP.NETの全体像

ASP.NET上で動作するWebアプリケーションフレームワーク「ASP.NET MVC」とは? その全体像と6つの構成要素について紹介する。書籍転載の1本目(導入編「1-1」)。

書籍転載:ASP.NET MVC 5 実践プログラミング
2. ASP.NET MVCとは?

なぜASP.NET MVCを使うとよいのか? Webフォームの問題点を示し、ASP.NET MVCの特徴とメリットを紹介する。書籍転載の2本目(導入編「1-2」)。

書籍転載:ASP.NET MVC 5 実践プログラミング
3. Razor構文

ASP.NET MVCのビュー開発では「Razor」ビューエンジンを利用するのが基本。そのRazorの基本的な文法を解説。書籍転載の3本目(導入編「4-1」)。

書籍転載:ASP.NET MVC 5 実践プログラミング
4. 【現在、表示中】≫ フォームを生成する - BeginFormメソッド[Razor]

<form>要素を生成するには、標準のビューヘルパーとして提供されているBeginFormメソッドが便利だ。その使い方を解説。書籍転載の4本目(基礎編「4-2-1」)。

書籍転載:ASP.NET MVC 5 実践プログラミング
5. ルート定義からフォームを生成する - BeginRouteFormメソッド[Razor]

ポスト先のルートパラメーターを指定した<form>要素を生成できるBeginRouteFormメソッドの使い方を解説。書籍転載の5本目(基礎編「4-2-2」)。

サイトからのお知らせ

Twitterでつぶやこう!