SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ASP.NET Dynamic Data活用編

ASP.NET Dynamic Dataのカスタマイズのポイントを知ろう!

ASP.NET Dynamic Data活用編(1)

  • X ポスト
  • このエントリーをはてなブックマークに追加

Dynamic Dataで活用される属性クラス

 Dynamic Dataでは、データモデルに対して属性を指定して、データフィールドとの結びつけを行います。属性クラスはSystem.ComponentModel.DataAnnotations名前空間にある属性クラスを使用します。属性を指定し、検証規約を定めることで、新規項目追加時や編集時に入力検証を実施できます。

 実際にデータモデルに直接属性クラスを記述することもできますが、パーシャルクラスを使用する方がカスタマイズしている部分を明示的に分離できるため、そちらで指定することが一般的でおすすめです。

図5 属性による入力検証
図5 属性による入力検証

 Dynamic Dataで使用する属性クラスは次のとおりです。

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化する方法とアプリケーションの組み込みについて紹介する予定です。お楽しみに。

参考文献

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト ナオキ(ナオキ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5595 2010/12/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング