共用方式為


ASP.NET 動態資料基礎結構

更新:2007 年 11 月

這個主題說明 ASP.NET Dynamic Data 網站的配置方式,並且介紹預設值所會建立的資料夾和檔案。

您可以使用 [動態資料站台] 範本在 Visual Studio 2008 中建立 ASP.NET Dynamic Data 網站。這個範本會產生使用者控制項、網頁範本以及 ASP.NET Web 檔案,動態資料會利用這些目建立可以操作資料的 UI。

資料內容類別

動態資料 Web 應用程式需要 MetaModel 物件以及註冊的資料內容。資料內容可以是 LINQ to SQL 類別 (System.Data.Linq.DataContext 類別的執行個體) 或 ADO.NET Entity Framework 類別。資料內容類別的位置應該在應用程式根目錄的 App_Code 資料夾中。如需詳細資訊,請參閱 ASP.NET 動態資料模型概觀

資料夾和檔案

下表說明會在 ASP.NET Dynamic Data 網站根層級建立的資料夾和檔案。

檔案或資料夾

說明

Dynamic Data

包含自訂控制項與顯示資料之網頁的資料夾。如需動態資料資料夾中子資料夾的詳細資訊,請參閱本主題稍後的動態資料資料夾結構。

Default.aspx

ASP.NET 網頁,會顯示 MetaModel 執行個體中註冊的資料夾及檢視。每一個資料表名稱都會呈現為一個 HyperLink 控制項,該控制項會顯示所選資料表的內容。

Global.asax

包含要註冊 MetaModel 類別的執行個體以及新增路由到 RouteCollection 物件的方法。如需詳細資訊,請參閱稍後的網站組態。

Site.css

動態資料頁面範本及控制項使用的階層式樣式表。

Site.master

網站的主版頁面。Default.aspx 和動態資料頁面範本會使用主版頁面。

Web.config

網頁的組態檔。如需詳細資訊,請參閱稍後的網站組態。

網站組態

依預設,動態資料站台包含 ASP.NET 網站中常見的檔案。然而,這些檔案還會包含動態資料特有資訊或是程式碼。這個章節提供動態資料所使用之檔案的相關資訊。

Global.asax 檔案

在動態資料站台中,Global.asax 檔案包含 Application_Start 事件的處理常式,當 Web 應用程式啟動時,便會引發該事件。在處理常式中,會呼叫 RegisterRoutes 方法。RegisterRoutes 方法包含 MetaModel 執行個體以及 RegisterContext 註冊呼叫。若要啟用動態資料作業,必須啟用 RegisterContext 方法並將有效的資料內容 (例如 DataContext 執行個體或 ADO.NET Entity Framework 內容) 傳遞給這個方法。

根據預設,動態資料站台中的 Global.asax 檔案會呼叫 Add(Type) 方法,為每一個動作加入 List.aspx、Details.aspx、Edit.aspx 及 Insert.aspx 頁面的路由。

ListDetails.aspx 頁面範本

這個頁面範本是一個 .aspx 檔案,其中包含動態資料會用於建立顯示與編輯資料的 UI。Global.asax 檔案中定義的路由,可以決定動態資料要使用哪些頁面執行 [清單]、[詳細資料]、[編輯] 及 [插入] 動作。如需詳細資訊,請參閱 ASP.NET 動態資料 Scaffolding 和頁面範本概觀

如果您想要變更頁面範本的路由,可以在 Global.asax 檔案中加入或移除路由定義 (預先定義的替代路由包含在 Global.asax 檔案中,但是沒有加上註解)。如需詳細資訊,請參閱 Global.asax 檔案中的註冊。

如果要利用動態資料、讓所有資料表都設為可以檢視的,請將 ContextConfiguration 物件的 ScaffoldAllTables 屬性 (Property) 設定為 true。或者,可以在表示要顯示資料表的部分類別中,將 ScaffoldTableAttribute 屬性 (Attribute) 設定為 true。ScaffoldTableAttribute 屬性 (Attribute) 可以讓您利用動態資料選擇性地顯示資料表。

Site.master 檔

Site.master 檔是動態資料站台的主版頁面。所有動態資料頁面範本都會使用這個檔案。Site.master 檔包含其 EnablePartialRendering 屬性設為 true 的 System.Web.UI.ScriptManager 控制項。如需詳細資訊,請參閱 ASP.NET 主版頁面概觀

  • 注意   EnablePartialRendering 屬性設為 true 時,資料庫伺服器擲回的例外狀況會造成瀏覽器中的執行階段錯誤。例如,如果嘗試更新的資料列有一個已於資料庫中定義的資料行限制條件,而該更新資料違反了該限制條件,那麼瀏覽器便會顯示執行階段錯誤。當 EnablePartialRendering 屬性設為 false 時,瀏覽器不會顯示詳細的例外狀況訊息。不過,瀏覽器會顯示指出伺服器處理時發生問題的 HTTP 500 錯誤。如需詳細資訊,請參閱加入 AJAX 和用戶端功能

Web.config 檔案

Visual Studio [動態資料站台] 範本會產生 Web.config 檔案,其中除了所有 ASP.NET 網站會使用的項目以外,還會包含動態資料專屬的項目。在 assemblies 區段中,會加入下列 DLL:

  • System.Web.Abstractions

  • System.Web.Routing

  • System.ComponentModel.DataAnnotations

  • System.Web.DynamicData

  • System.Data.Linq

標記前置詞 "asp:" 會註冊給 System.Web.DynamicData 命名空間及組件使用。

FieldTemplates 資料夾中的控制項會使用下列 System.Web.DynamicData 組件中的控制項會。

URL 路由模組 UrlRoutingModule 會加入到 httpModules 項目及 system.webServer 區段。

DynamicData 資料夾結構

下表說明 DynamicData 資料夾中的子資料夾。

檔案或資料夾

說明

Content

根據預設,其中包含 Images 資料夾以及GridViewPager.ascx 與 FilterUserControl.ascx 這兩個控制項。Images 資料夾包含用於頁面巡覽區控制項圖示的圖形檔案。FilterUserControl.ascx 是 ASP.NET 使用者控制項,用於篩選外部索引鍵資料行。如需詳細資訊,請參閱本文件的動態資料 Web 伺服器控制項。

CustomPages

自訂頁面範本的容器資料夾。自訂頁面範本會用於覆寫 DynamicData\PageTemplates 中定義的頁面範本。例如,如果資料內容包含名為 Products 的資料表,您可以建立 DynamicData\CustomPages\Products 資料夾,然後在新資料夾中新增要用於顯示 Products 資料的 .aspx 頁面。簡易的上手方法就是將頁面從 DynamicData\PageTemplates 資料夾中複製到新的 DynamicData\CustomPages\Products 資料夾,然後再修改這些範本。如需自訂頁面版本的詳細資訊,請參閱 HOW TO:使用自訂頁面範本以自訂個別資料表的配置

FieldTemplates

包含可以從資料模型對應到資料型別的動態資料使用者控制。如需詳細資訊,請參閱 ASP.NET 動態資料欄位範本概觀ASP.NET 動態資料欄位範本概觀

PageTemplates

包含頁面範本資料夾,其中的範本會產生用於檢視及編輯資料的 UI。如需詳細資訊,請參閱 ASP.NET 動態資料 Scaffolding 和頁面範本概觀

GridViewPager 控制項

GridViewPager.ascx 檔案為衍生自 WebControl 的使用者控制項。這個控制項在資料表包含多個頁面的資料時,可以增強分頁功能。GridViewPager 使用者控制項會用於 List.aspx 及 ListDetails.aspx 頁面範本。

FilterUserControl 控制項

FilterUserControl.ascx 檔案是 ASP.NET 使用者控制項,用於篩選外部索引鍵與布林值的資料行。FilterUserControl 使用者控制項會用於 List.aspx 及 ListDetails.aspx 頁面範本。對於資料表中每一個外部索引鍵資料行以及每一個布林值資料行,這個控制項都會初始化一次。

例如,在使用 AdventureWorksLT 資料庫的動態資料站台中,可以要求顯示 Product 資料表中資料的頁面。Product 資料表包含參考 ProductCategory 資料表的 ProductCategoryID 外部索引鍵資料行。動態資料會推測 ProductCategoryID 外部索引鍵對應於 ProductCategory 資料表中的 Name 欄位。然後,會以 ProductCategory 資料表的 Name 欄位取代 ProductCategoryID 欄位。

AdventureWorksLT 資料庫的 Product 資料表顯示時,使用推測出的 ProductCategoryID 欄位名稱,FilterUserControl 會用於建立 ProductCategoryID 外部索引鍵的 DropDownList 控制項。您可以選取某一個產品類別,只顯示資料表中包含所選產品類別的資料列。例如,您選取了 [Mountain Bikes],那麼只會顯示產品類別為 Mountain Bikes 的資料列。

FilterUserControl 也會加入資料表中每一個有布林值的資料行。對於使用布林值的資料行,您可以選取所有欄位或只選取標記為 True 或 False 的欄位。

FilterUserControl 控制項的限制

FilterUserControl 對於布林值資料行以及外部索引鍵資料行最為實用,因為這些資料行在參考的資料表中只有少數的資料列。

請參閱

概念

ASP.NET 動態資料概觀

ASP.NET 動態資料模型概觀

ASP.NET 動態資料 Scaffolding 和頁面範本概觀

其他資源

LINQ to SQL

ADO.NET Entity Framework