ASP.NET Dynamic Data の概要

更新 : 2008 年 7 月

ASP.NET Dynamic Data は、データ ドリブン ASP.NET Web アプリケーションの迅速な作成を可能にするフレームワークです。実行時にデータ モデル メタデータを自動的に検出し、それに基づいて UI 動作を派生することで、この動作が可能になります。スキャフォールディング フレームワークにより、データの表示と編集のための機能的な Web サイトが提供されます。スキャフォールディング フレームワークは、要素を変更したり、既定の動作をオーバーライドする新しい要素を作成したりすることで簡単にカスタマイズできます。既存のアプリケーションでは、スキャフォールディング要素を ASP.NET ページに簡単に統合できます。

このトピックは、次のセクションで構成されています。

  • 概要

  • 機能

  • 背景

  • クラス リファレンス

  • 追加情報

機能

ASP.NET Dynamic Data を使用すると、最小限のコードで Dynamic Data フレームワークの機能を最大限に活用する新しいデータ ドリブン Web サイトを作成できます。特定の Dynamic Data 機能を選択して既存の Web サイトに追加することもできます。

Dynamic Data は、次の機能を提供します。

背景

Dynamic Data は、実行時に基になるデータベース スキーマからデータ フィールドの外観と動作を判断できるという動的な特性を持ちます。この機構に加えて、用意されている既定のページ テンプレートやフィールド テンプレート、柔軟なカスタマイズ性の組み合わせにより、さまざまなデザイン上の選択肢が提供されます。次に例を示します。

  • スキャフォールディングを使用した Web サイトの構築。

  • 既存の Web サイトへの動的データの追加。

  • データ フィールド検証ビジネス ロジックの追加。

  • 特定のデータ フィールドまたは特定のテーブルを表示および編集するための UI のカスタマイズ。

データ モデル

データ モデルは、データベースに含まれている情報と、データベース内の項目がどのように関連付けられているかを表します。

Dynamic Data では、LINQ-to-SQL データ モデルと ADO.NET Entity Framework データ モデルがサポートされています。1 つの Web アプリケーションには、データ モデルの複数のインスタンスを含めることができますが、Dynamic Data で使用されるモデルの種類は同一である必要があります。

Dynamic Data で使用するデータ モデルは、Web アプリケーションの Global.asax ファイルに登録します。Dynamic Data にデータ モデルを登録すると、データ フィールドの自動検証を実行でき、データ層レベルでデータの外観と動作を制御することが可能になります。

スキャフォールディング

スキャフォールディングは、データ モデルに基づいてページを動的に表示することで、既存の ASP.NET ページ フレームワークを強化する機構です。スキャフォールディングには、次の利点があります。

  • 最小限のコードまたはコードなしでデータ ドリブン Web アプリケーションを作成できる。

  • 短時間で開発できる。

  • データベース スキーマに基づく組み込みのデータ検証を利用できる。

  • それぞれの外部キーまたはブール値フィールドに対して自動的にデータが選択される。

ページ テンプレート

Dynamic Data スキャフォールディングでは、ページ テンプレートを使用してデータ テーブルの既定のビューを提供します。ページ テンプレートは、Dynamic Data で利用できる任意のテーブルのデータを表示するように構成された ASP.NET Web ページです。Dynamic Data には、テーブルの一覧表示 (リスト ビュー)、マスター/詳細テーブルの表示 (詳細ビュー)、データの編集 (編集ビュー) など、データの異なるビューのためのページ テンプレートが用意されています。既定では、Dynamic Data は、リスト ビュー ページ テンプレートのみを使用するように構成されています。既定のページ テンプレートを変更したり、異なる目的に対して異なるページ テンプレートを使用するように Dynamic Data を変更したりできます。詳細については、「ASP.NET Dynamic Data のインフラストラクチャ」を参照してください。

フィールド テンプレート

Dynamic Data では、フィールド テンプレートを使用して、個々のデータ フィールドを表示および編集するための UI をレンダリングします。適切なフィールド テンプレートは、データ フィールドの型に基づいて決定されます。Dynamic Data には、データ フィールドの表示および編集のための個別のフィールド テンプレートが含まれています。

たとえば、DateTime データ フィールドには、次のフィールド テンプレートが使用されます。

  • DateTime.ascx。このテンプレートは、DateTime データ型をテキスト (文字列) として表示し、Literal コントロールとしてレンダリングします。

  • DateTime_Edit.ascx。このテンプレートは、TextBox コントロールをレンダリングします。データベース内のフィールドを null にすることができない場合、または入力を要求するようにデータ モデルがカスタマイズされている場合は、RequiredFieldValidator コントロールもレンダリングされます。DateTime_Edit.ascx フィールド テンプレートは、データ モデルからスローされたあらゆる例外を処理する DynamicValidator コントロールを備えています。また、Regex クラスもサポートされます。

Dynamic Data Web プロジェクトを作成すると、Visual Studio によって、DynamicData\FieldTemplates フォルダがプロジェクトに追加されます。このフォルダには、既定のフィールド テンプレートが格納されます。

個々のデータ フィールドをどのようにレンダリングするかを指定するために、組み込みのフィールド テンプレートをカスタマイズしたり、新しいフィールド テンプレートを作成したりできます。たとえば、電話番号や電子メール アドレスの表示と編集を行う UI をレンダリングするフィールド テンプレートを作成できます。または、別の方法 (スライダなど) でユーザーが数値データを指定できるようにする UI をレンダリングするフィールド テンプレートを作成することもできます。

既存のデータ コントロールの拡張

Dynamic Data は、次のように既存のデータ コントロールを拡張して、動的な動作を実現します。

  • DetailsView コントロールと GridView コントロールでは、定義済みの Dynamic Data テンプレートを使用してデータを動的に表示できます。各ページのデータ コントロールに対して、同じマークアップとコードを何度も作成する必要はありません。これらのテンプレートをカスタマイズして、使用するコントロールや、データ フィールドの表示用と編集用の UI のレンダリング方法を変更できます。1 か所に変更を加えるだけで、Web アプリケーション全体のデータ コントロールの外観や動作に反映させることができます。これは特定のテーブルに関連付けられていないため、データベース内のどのテーブルでもページ テンプレートを使用できます。詳細については、「方法 : DynamicField を使用してデータ バインド コントロールに動的な動作を追加する」を参照してください。

  • FormView コントロールと ListView コントロールでは、DetailsView コントロールや GridView コントロールに似た動作を実装できます。そのためには、テンプレート内で DynamicControl コントロールを使用し、行のどのフィールドを表示するかを指定します。Dynamic Data は、指定されたテンプレートに基づいて、これらのコントロールの UI を自動的に作成します。DynamicControl コントロールはフィールドの UI を自動的にはレンダリングしないため、コントロールを特定のデータ フィールドにバインドする必要があります。詳細については、「方法 : テンプレート化されたデータ バインド コントロールで ASP.NET Dynamic Data を使用する」を参照してください。

  • Dynamic Data は、LINQ-to-SQL データ モデルまたは Entity Framework データ モデルのデータ モデル メタデータを調べ、メタデータに基づいて自動検証を提供します。たとえば、データベースのある列が null 非許容とマークされている場合、その列には自動的に RequiredFieldValidator コントロールがレンダリングされます。データ フィールドのレンダリング方法や検証方法をさらにカスタマイズするために、カスタム メタデータを適用することもできます。詳細については、「方法 : データ モデルのデータ フィールド検証をカスタマイズする」を参照してください。

クラス リファレンス

ASP.NET Dynamic Data クラスを含む名前空間の一覧を次の表に示します。

名前空間

説明

System.ComponentModel.DataAnnotations

Dynamic Data コントロールのメタデータを定義するために使用される属性クラスを提供します。

System.Web.DynamicData

ASP.NET Dynamic Data のコア機能を提供するクラスが含まれます。Dynamic Data の動作をカスタマイズするための機能拡張も用意されています。

追加情報

次に行う作業の例を示します。

  • URL ルーティングについて理解します。詳細については、「ASP.NET ルーティング」を参照してください。

  • LINQ-to-SQL オブジェクト リレーショナル マッピングについて理解します。詳細については、「LINQ to SQL」を参照してください。

  • ADO.NET Entity Framework について理解します。詳細については、「ADO.NET Entity Framework」を参照してください。

ページのトップへ

参照

処理手順

チュートリアル : スキャフォールディングを使用した新しい Dynamic Data Web サイトの作成

チュートリアル : 既存の Web サイトへの Dynamic Data の追加

概念

ASP.NET Dynamic Data のインフラストラクチャ

ASP.NET Dynamic Data スキャフォールディングとページ テンプレートの概要

ASP.NET データ バインド コントロールへの動的な動作の追加

ASP.NET Dynamic Data のフィールド テンプレートの概要

ASP.NET Dynamic Data モデルの概要

履歴の変更

日付

履歴

理由

2008 年 7 月

トピックを追加

SP1 機能変更