更新 : 2007 年 11 月
このトピックでは、ASP.NET Dynamic Data Web サイトのレイアウトについて説明します。既定で作成されるフォルダとファイルについても取り上げます。
ASP.NET Dynamic Data Web サイトは、Visual Studio 2008 で [Dynamic Data Web サイト] テンプレートを使用して作成できます。このテンプレートからは、ユーザー コントロール、ページ テンプレート、および、ASP.NET Web ファイル (データ操作用の UI を作成するために Dynamic Data によって使用される) が生成されます。
データ コンテキスト クラス
Dynamic Data Web アプリケーションには、MetaModel オブジェクトおよび登録済みのデータ コンテキストが必要です。データ コンテキストには、LINQ to SQL クラス (System.Data.Linq.DataContext クラスのインスタンス) または ADO.NET Entity Framework クラスを使用できます。データ コンテキスト クラスは、アプリケーションのルートの App_Code フォルダに存在している必要があります。詳細については、「ASP.NET Dynamic Data モデルの概要」を参照してください。
フォルダとファイル
次の表は、ASP.NET Dynamic Data Web サイトのルート レベルで作成されるファイルとフォルダについて説明したものです。
ファイルまたはフォルダ |
説明 |
---|---|
Dynamic Data |
カスタム コントロール用のフォルダと、データ表示ページ用のフォルダが格納されます。Dynamic Data フォルダのサブフォルダの詳細については、このトピックの後半の「DynamicData のフォルダ構造」を参照してください。 |
Default.aspx |
MetaModel インスタンスに登録されたテーブルおよびビューを表示する ASP.NET ページです。それぞれのテーブル名が、選択されたテーブルの内容を表示する HyperLink コントロールとしてレンダリングされます。 |
Global.asax |
MetaModel クラスのインスタンスを登録するためのメソッドや、RouteCollection オブジェクトにルートを追加するためのメソッドが含まれます。詳細については、このトピックの後半の「Web サイトの構成」を参照してください。 |
Site.css |
Dynamic Data ページ テンプレートおよびコントロールで使用されるカスケード スタイルシートです。 |
Site.master |
サイトのマスタ ページです。マスタ ページは、Default.aspx テンプレートおよび Dynamic Data ページ テンプレートで使用されます。 |
Web.config |
サイトの構成ファイルです。詳細については、このトピックの後半の「Web サイトの構成」を参照してください。 |
Web サイトの構成
既定では、Dynamic Data Web サイトには ASP.NET Web サイトの標準的なファイルが含まれています。ただし、これらのファイルの中には Dynamic Data に固有の情報やコードもあります。このセクションでは、Dynamic Data で使用されるファイルについて取り上げます。
Global.asax ファイル
Dynamic Data Web サイトの Global.asax ファイルには、Web アプリケーションの起動時に発生する Application_Start イベントのハンドラが含まれます。このハンドラでは、RegisterRoutes メソッドが呼び出されます。RegisterRoutes メソッドには、MetaModel のインスタンスがあり、RegisterContext の呼び出しがコメントアウトされています。Dynamic Data の操作を有効にするには、RegisterContext メソッドが呼び出されるようにして、有効なデータ コンテキスト (DataContext インスタンスや ADO.NET Entity Framework コンテキストなど) を渡す必要があります。
既定では、Dynamic Data Web サイトの Global.asax ファイルから Add(Type) メソッドが呼び出され、各操作に必要な List.aspx、Details.aspx、Edit.aspx、および Insert.aspx ページのルーティングが追加されます。
ListDetails.aspx ページ テンプレート
ページ テンプレートは、Dynamic Data が使用できるコントロールを含む .aspx ファイルです。これらのコントロールは、データの表示用と編集用の UI を作成するときに使用されます。Dynamic Data が一覧表示、詳細表示、編集、表示の各操作を実行するときに使用するページ テンプレートは、Global.asax ファイルに定義されているルートによって決まります。詳細については、「ASP.NET Dynamic Data スキャフォールディングとページ テンプレートの概要」を参照してください。
ページ テンプレートへのルーティングは、Global.asax ファイルでルート定義を追加または削除することによって変更できます (Global.asax ファイルには定義済みの代替ルートも記述されていますが、コメント アウトされています)。詳細については、Global.asax ファイルのコメントを参照してください。
Dynamic Data を使用してすべてのテーブルを表示できるようにするには、ContextConfiguration オブジェクトの ScaffoldAllTables プロパティを true に設定します。または、表示するテーブルを表す部分クラスで、ScaffoldTableAttribute 属性を true に設定する方法もあります。特定のテーブルだけを Dynamic Data で表示できるようにする場合は、ScaffoldTableAttribute 属性を使用します。
Site.master ファイル
Site.master ファイルは、Dynamic Data Web サイトのマスタ ページです。すべての Dynamic Data ページ テンプレートで使用されます。Site.master ファイルには System.Web.UI.ScriptManager コントロールが含まれ、このコントロールの EnablePartialRendering プロパティは true に設定されます。詳細については、「ASP.NET マスター ページの概要」を参照してください。
- メモ EnablePartialRendering プロパティが true に設定されている場合、データベース サーバーから例外がスローされると、ブラウザでランタイム エラーが発生します。たとえば、更新しようとしている行に対してデータベースで列制約が定義されている場合、更新データが制約に違反していると、ブラウザにランタイム エラーが表示されます。EnablePartialRendering プロパティが false に設定されている場合は、ブラウザに詳細な例外メッセージは表示されません。代わりに、サーバーの処理中に問題が発生したことを示す HTTP 500 エラーが表示されます。詳細については、「AJAX およびクライアント機能の追加」を参照してください。
Web.config ファイル
Visual Studio の [Dynamic Data Web サイト] テンプレートでは、すべての ASP.NET Web サイトに共通のファイルに加えて、Dynamic Data に固有の要素を含む Web.config ファイルが生成されます。assemblies セクションには、次の DLL が追加されます。
System.Web.Abstractions
System.Web.Routing
System.ComponentModel.DataAnnotations
System.Web.DynamicData
System.Data.Linq
System.Web.DynamicData の名前空間とアセンブリには、"asp:" というタグ プレフィックスが登録されます。
次に示す System.Web.DynamicData アセンブリのコントロールは、FieldTemplates フォルダのコントロールによって使用されます。
httpModules 要素および system.webServer セクションには、URL ルーティング モジュール UrlRoutingModule が追加されます。
DynamicData のフォルダ構造
次の表は、DynamicData フォルダのサブフォルダについて説明したものです。
ファイルまたはフォルダ |
説明 |
---|---|
Content |
既定では、Images フォルダと 2 つのコントロール (GridViewPager.ascx および FilterUserControl.ascx) が格納されます。Images フォルダには、ページャ コントロールのアイコンとして使用されるグラフィックス ファイルが格納されます。FilterUserControl.ascx は、外部キー列をフィルタ処理するために使用される ASP.NET ユーザー コントロールです。詳細については、このドキュメントの「FilterUserControl コントロール」を参照してください。 |
CustomPages |
カスタム ページ テンプレートのコンテナ フォルダです。カスタム ページ テンプレートは、DynamicData\PageTemplates に定義されているページ テンプレートをオーバーライドするために使用します。たとえば、データ コンテキストに Products という名前のテーブルが存在する場合は、DynamicData\CustomPages\Products フォルダを作成し、その新しいフォルダに、商品データを表示するための .aspx ページを追加できます。最初は、DynamicData\PageTemplates フォルダから新しい DynamicData\CustomPages\Products にページをコピーし、テンプレートに変更を加えるのが最も簡単な方法です。カスタム ページ テンプレートの詳細については、「方法 : カスタム ページ テンプレートを使用して個々のテーブルのレイアウトをカスタマイズする」を参照してください。 |
FieldTemplates |
データ モデル内のデータ型に対応する Dynamic Data ユーザー コントロールが格納されます。詳細については、「ASP.NET Dynamic Data のフィールド テンプレートの概要」および「ASP.NET Dynamic Data のフィールド テンプレートの概要」を参照してください。 |
PageTemplates |
データの表示用と編集用の UI を生成するページ テンプレートのコンテナ フォルダです。詳細については、「ASP.NET Dynamic Data スキャフォールディングとページ テンプレートの概要」を参照してください。 |
GridViewPager コントロール
GridViewPager.ascx ファイルは、WebControl から派生したユーザー コントロールです。テーブル データが 1 ページに収まりきらない場合のページング機能を強化するために使用されます。GridViewPager ユーザー コントロールは、List.aspx と ListDetails.aspx の各ページ テンプレートで使用されます。
FilterUserControl コントロール
FilterUserControl.ascx ファイルは、外部キーとブール型の列をフィルタ処理するために使用される ASP.NET ユーザー コントロールです。FilterUserControl コントロールは、List.aspx と ListDetails.aspx の各ページ テンプレートで使用されます。テーブル内の外部キー列ごと、およびブール型列ごとに、1 回ずつ初期化されます。
たとえば、AdventureWorksLT データベースを使用する Dynamic Data Web サイトで、Product テーブルのデータを表示するページを要求したとします。Product テーブルには、ProductCategory テーブルを参照する ProductCategoryID という外部キー列が存在します。Dynamic Data は、ProductCategoryID 外部キーが ProductCategory テーブルの Name フィールドに対応すると推論します。そこで、ProductCategoryID フィールドを ProductCategory テーブルの Name フィールドに置き換えます。
AdventureWorksLT データベースの Product テーブルが表示されるときには、FilterUserControl が使用され、ProductCategoryID 外部キー用の DropDownList コントロールが作成されます。これには、ProductCategoryID フィールドに対応する推論された名前が使用されます。製品カテゴリを選択すると、テーブル内でその製品カテゴリに該当する行だけを表示できます。たとえば、Mountain Bikes を選択した場合は、製品カテゴリが Mountain Bikes である行だけが表示されます。
テーブル内の各ブール型列についても、FilterUserControl が追加されます。ブール型の列では、すべてのフィールドを選択するか、true または false としてマークされたフィールドだけを選択できます。
FilterUserControl コントロールの制限
FilterUserControl は、参照先テーブルの行数が比較的少ない外部キー列およびブール型列に適しています。
参照
概念
ASP.NET Dynamic Data スキャフォールディングとページ テンプレートの概要