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

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

ASP.NETMVC2モデルによる検証(2)カスタム検証

ASP.NETMVC2モデルによる検証(1) に書いたデフォルトの検証属性では検証できない場合、
独自の検証ロジックを実装するやり方があります。

それがカスタム検証です。
先の検証属性と同様に、モデルに属性を付与することで実装し、サーバー側で実行される検証となります。

◆カスタム検証の実装例
では、カスタム検証の実装例です。まずは独自の検証ロジックを実装するクラスを用意します。
f:id:UnderSourceCode:20130504105909j:plain
このクラスの実装にはいくつかルールがあります。
1.クラス名は「属性名」+「Attribute」。(必須)
2.ValidationAttribute クラスを継承する。 (必須)
3.IsValid()メソッドをオーバーライドし、検証ロジックを実装する。 (必須)
4.属性のパラメータは、クラスのプロパティとする。(任意)

この例ではLengthプロパティで指定された数値と、
画面で入力した値(IsValid()の引数value)の文字数を比較し、
入力した文字数が多い場合はエラーとしています。

次に、上で定義した検証ロジックを、モデルの属性として定義します。
f:id:UnderSourceCode:20130504105922j:plain
属性名は、検証ロジックのクラス名より「Attribute」を取り除いたモノです(この例ではIdLenght)。
またプロパティに値を定義しています(Lengthプロパティにint型の 5 を与えている)。

実際に実行してみると・・・
f:id:UnderSourceCode:20130504105934j:plain

カスタム検証のIsValid()が実行されます。
f:id:UnderSourceCode:20130504105952j:plain