ASP.NET MVC3 で 空文字入力欄を扱う

http://coding.abel.nu/2012/05/ef-code-firstmvc-notnullattribute/

DataAnnotation の世界では [Required(AllowEmptyStrings = true)] の利用を想定しているのだが、MVC3 だとうまくいかない。これは JavaScript 側で RequiredAttribute が存在したら必須の確認が走ってしまうため、という記事。

MVC3の場合には以下の対処をする。

  • RequiredAttribute を継承した NotNullAttribute を作成する
  • 対象のプロパティに [NotNull] [DisplayFormat(ConvertEmptyStringToNull = false)] を付与して model binder が空文字を自動的に null に変換するのを抑制する。

前者、[NotNull] の効果により、null になることを防ぐことができる。具体的には画面上に対応する要素が存在しない (@Html.TextBoxFor, @Html.TextAreaFor, @Html.HiddenFor のいずれか) 場合に検証エラーとなる。

こんな感じでまだ発展途上な部分は残ってるかもしれないけど、System.ComponentModel.DataAnnotations は本当に素晴らしい。

# MVC4 / .NET 4.5 でどうなっているかは未確認です。MVC4はそろそろ触り始めるところ。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。