ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

ASP.NET MVC 2 モデルによる検証(1)検証属性

以前の記事で、Mode-View-Controllerパターンのモデルはビジネスロジックやデータの取得・更新処理を実装すると書きました。

ASP.NET MVC 2 では、ビジネスロジックの一つである入力値の検証を、モデルに実装することができます。
今回はデフォルトで用意されている検証をについて纏めてみます。

◆デフォルトの検証属性
ASP.NET MVC 2 では、検証を属性という形で定義します。(詳細は後ほどソースの例を書きます)
デフォルトで用意されている検証属性は以下の通りです。

StringLength
  →データフィールドの最大文字数を指定する。
Required
  →データフィールドを入力必須に指定する。
RegularExpression
  →データフィールドの入力パターンを正規表現で指定する。
Range
  →データフィールドの入力範囲を指定する。
DataType
  →データフィールドに値の型を指定する。

◆検証属性の実装例
では、デフォルトの検証属性を使用したソースの例です。
検証対象の入力値を格納するモデルのプロパティに、属性を付与することで実装します。

まずは、画面のHTMLです。Html.ValidationMessageFor(model => model.Name) のように
検証属性が返すエラーメッセージの表示箇所を指定しています。
f:id:UnderSourceCode:20130504110229j:plain


次にモデルです。画面の入力値を格納するプロパティに、検証属性を付与しています。
f:id:UnderSourceCode:20130504110245j:plain

属性は、[属性名(プロパティ or エラーメッセージ)] という形になります。
そして画面より入力値を受け取るコントローラでは、ModelState.IsValid()プロパティを参照してエラーを判定します。
f:id:UnderSourceCode:20130504110257j:plain

このコントローラの例では、エラーの場合は return View(entry) で画面をそのまま表示しています。
画面を表示すると、モデルの検証属性で定義したエラーメッセージが表示されます。

実際に実行してみた結果が、以下の画面です。
f:id:UnderSourceCode:20130504110309j:plain