ASP.NET MVCのビューの開発について

個人的な備忘録として。

検証関連のビューヘルパーについて

Webフォームの頃と大きく異なり、
検証機能(空文字チェック、文字数チェック等)自体は提供されていない。
MVCの検証関連のビューヘルパーが提供する機能は、
あくまで検証結果でエラーが発生した場合の検証エラーメッセージを表示するためだけの機能。
なので、正規表現などを使い自前で実装する必要あり。

ビューヘルパーの自作について

ビューヘルパーが最低限満たすべき条件は

  • 静的メソッドであること。(VBだとShared)
  • 戻り値として文字列を返すこと。

ビューヘルパーを定義したクラスは「~/Helper」フォルダに作成するが、
あくまで慣例的なものであり、
任意のフォルダに配置して構わない(規約次第。)

ついでにビューヘルパーは拡張メソッドとしても定義できる。

View変数について

<%: Html.ValidationMessageFor(Function(model) model.name) %>の、
「model.name」は、modelというオブジェクトがあるわけではない。
ViewData.model.nameの短縮記法。

Evalメソッド

ViewDataプロパティを再帰的に検索するための機能を提供する。
例えば、
<%: Html.Encode(model.birth.value.Year)%>

<%: Html.Encode(ViewData.Eval("birth.Year"))%>
というように書き換えることが可能。

メリット
  • 条件によって動的に変動するようなアクセスパスも容易に表現可能
  • Null系の処理が楽(<%: Html.Encode(ViewData.Eval("birth","{0:D}"))%>)こんな感じ
デメリット
  • インテリセンスが活かせない。
  • メリットを活かせない場合は普通に書いたほうが分かりやすい。