7.新規作成画面作成
住所録のデータを新しく登録する画面を作成してみます。
手順の流れは一覧画面と同じく、コントローラに登録処理記載→ビューを作成して
表示の微調整といった感じです。
まずはコントローラのCreateアクションに以下のコードを記述します。
// // GET: /Address/Create public ActionResult Create() { return View(); } // // POST: /Address/Create [HttpPost] public ActionResult Create(Address ad, FormCollection collection) { try { // 住所録登録 _db.AddToAddress(ad); _db.SaveChanges(); // 一覧に戻る return RedirectToAction("Index"); } catch { // 入力に戻る return View(); } }
引数がないCreateアクションは画面遷移時に呼ばれ、 FormCollectionの引数を
持ったアクションはポスト時に呼ばれます。 HttpPost属性が付いているのは、
ポスト時以外では絶対に呼ばないということを明示化するためです。
ポスト時アクションの引数にビュー生成時に
関連付けたクラス(Address)を追加すると、ポスト時に入力された値が取得できます。
FormCollectionでも入力値がハッシュ化されているため取得は可能です。
後はAddToAddressでデータの登録を行い、SaveChangesで更新反映を行います。
RedirectToActionで引数に一覧のアクション名を指定して一覧画面に戻りますが、
このあたりの仕様は後日まとめたいと思いますm(_ _)m
ちなみに入力値がおかしい場合はSaveChangesで例外が発生し、
再び入力画面を表示する仕組みです。
次に、ビューの作成を行います。
作成手順は一覧画面作成時と同様、Createアクション内にカーソルを合わせて
右クリメニュー→Add Viewです。
View contentにCreateと指定してください。
下記は自動生成されたビューのコードです。
<% using (Html.BeginForm()) { %> <%= Html.ValidationSummary(true) %> <fieldset> <legend>Fields</legend> <div class="editor-label"> <%= Html.LabelFor(model => model.address_id) %> </div> <div class="editor-field"> <%= Html.TextBoxFor(model => model.address_id) %> <%= Html.ValidationMessageFor(model => model.address_id) %> </div> <div class="editor-label"> <%= Html.LabelFor(model => model.name) %> </div> <div class="editor-field"> <%= Html.TextBoxFor(model => model.name) %> <%= Html.ValidationMessageFor(model => model.name) %> </div> ~中略~ <p> <input type="submit" value="Create" /> </p> </fieldset> <% } %>
上記のような形で、入力項目を生成してます。
Html.BeginFormはフォームタグ生成、
Html.ValidationSummaryでエラーリストの表示場所を指定、
Html.TextBoxForはテキストボックス生成、
Html.ValidationMessageForではエラーメッセージ出力用のタグを生成します。
Html.LabelForではプロパティ名を表示しています。この辺りは作成者の好みですが、
私は丸ごと日本語名に置き換えてしまいました。コードやフラグ等の入力しない
項目は削除して下さい。
なお、今回使用したAddressテーブルではコードに相当するaddress_idは自動采番、
状態フラグのstatus_flagは既定値を設定しております。 既定値はモデル作成時に
取り込まれないため、モデルのデザイナで各項目のプロパティに設定する必要があります。
上記の作業が終了しましたら、一覧画面を立ち上げて新規作成(Create New)
リンクをクリックして下さい。
値を入力してCreateボタン押下後、一覧画面に戻って無事登録が確認できたら完了です。
実はデフォルトで入力チェックがかかっているらしく、必須項目に設定されているものに
空を入力するとエラーとなります。 自分でチェック内容も設定できますが、
やり方は後日まとめる予定です。
なお、記載内容はある程度精査しているのですが、もし誤り等がありましたら
大変お手数ですがお教え願いないでしょうか。よろしくお願いいたします。
続きます。
→ASP.NET MVCを使ってみました その4