ダウンロード サンプルファイル (1.6 MB)
Dynamic Dataで活用される属性クラス
Dynamic Dataでは、データモデルに対して属性を指定して、データフィールドとの結びつけを行います。属性クラスはSystem.ComponentModel.DataAnnotations名前空間にある属性クラスを使用します。属性を指定し、検証規約を定めることで、新規項目追加時や編集時に入力検証を実施できます。
実際にデータモデルに直接属性クラスを記述することもできますが、パーシャルクラスを使用する方がカスタマイズしている部分を明示的に分離できるため、そちらで指定することが一般的でおすすめです。

Dynamic Dataで使用する属性クラスは次のとおりです。
| 属性クラス | 概要 |
| ConcurrencyCheckAttribute | 楽観同時実行制御チェック時の列のデータ型を指定 |
| CustomValidationAttribute | カスタムメソッドを指定 |
| DataTypeAttribute | メールアドレスや電話番号など、特殊な追加型を指定 |
| DisplayAttribute | データの表示文字列を指定 |
| DisplayColumnAttribute | 外部キー使用時に、参照先テーブルの最初の列を表示する列の指定 |
| DisplayFormatAttribute | データフィールドの表示方法と書式を指定 |
| EditableAttribute | データフィールドの編集の有無を指定 |
| EnumDataTypeAttribute | 列挙型をデータ列に紐づける |
| FilterUIHintAttribute | フィルタ時の処理ヒントを指定 |
| KeyAttribute | エンティティ識別のキーを指定 |
| MetadataTypeAttribute | メタデータクラスを指定 |
| RangeAttribute | 値の数値範囲を指定 |
| RegularExpressionAttribute | 正規表現を指定 |
| RequiredAttribute | 必須項目を指定 |
| ScaffoldColumnAttribute | データ列にスキャフォールディングを使用するかどうかを指定(Global.asaxファイルのScaffoldTableAttributeの個別に列指定を実施する属性クラス) |
| StringLengthAttribute | 最小/最大文字長を指定 |
| TimestampAttribute | 列のデータ型を一意の形で指定 |
| UIHintAttribute | データフィールドの表示に使用されるユーザーコントロールなどを指定 |
| ValidationAttribute | 検証属性の基本クラス |
以下、簡単に使用例を記載します。
using System.ComponentModel.DataAnnotations;
namespace DDSample.Model
{
// Employeesクラスのパーシャルクラス
[MetadataType(typeof(EmployeesAnnotation))]
public partial class Employees
{
}
public class EmployeesAnnotation
{
// 必須入力チェックのRequiredAttribute属性を指定
[Required]
public Int32 EmployeeID
}
名前空間を指定し、EDMのパーシャルクラスを作成し、属性クラスを指定します。上記サンプルでは必須入力チェックを実施するRequiredAttribute属性を指定しています。このような形でEDMなどのデータソースに対して検証ルールの付加をしていくパターンが、属性クラスのカスタマイズの基本となります。
.NETでも十分なほど属性クラスが用意されていますが、CustomValidationAttribute属性クラスや、ValidationAttribute属性クラスを使用することで、現場レベルで活用可能な属性クラスも作成可能です。この属性クラスがフィールドテンプレートと密接に絡むことを押さえておきましょう。
まとめ
今回はDynamic Dataをカスタマイズするにあたり、注目するべき基本部分について紹介しました。繰り返しになりますが、DynamicDataのカスタマイズは大別して2種類に分けられます。
- Dynamic Dataの動的ユーザーコントロールなど、プレゼンテーション部分のカスタマイズ(カスタム動的ユーザーコントロールの追加や差し替え、独自のテーブルページの追加など)
- メタデータに対する振る舞い部分など、DataAnnotations名前空間の属性を使用したカスタマイズ(入力値の制限や検証を実施)
この部分さえ押さえれば、Dynamic Dataを実プロジェクトで活用するためのカスタマイズのイメージも掴みやすくなるかもしれません。
次回は既存のWeb Formアプリケーションを簡単にDynamic Data化する方法とアプリケーションの組み込みについて紹介する予定です。お楽しみに。
参考文献
この記事は参考になりましたか?
既に会員の方はを行ってください。
- ASP.NET Dynamic Data活用編連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト ナオキ(ナオキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
