摘要:新的ASP.NET動態資料支援
【原文位址】New ASP.NET Dynamic Data Support
【原文發表日期】 Friday, December 14, 2007 12:41 AM
上個週末發佈的ASP.NET 3.5 Extensions CTP預覽版包括了一堆很棒的新特性。
其中一個新特性是我們稱之為「ASP.NET Dynamic Data Support(動態資料支援)」的東西。簡單地說,這個東西允許你極其快速地建造可以使用LINQ to SQL(在將來LINQ to Entities)物件模型的資料驅動的網站,還允許你不用手工建造任何網頁。
看它在實戰中的例子的最佳方式是觀看David Ebbo的精彩的17分鐘屏播:
你也可以按下面的步驟來輕鬆上手,開始使用動態資料支援:
第一步: 建立ASP.NET動態資料網站
在安裝ASP.NET 3.5 Extensions CTP預覽版之後,你可以使用VS 2008或免費的Visual Web Developer 2008 Express版來建立啟用ASP.NET動態資料支援的新網站專案或新Web應用專案:
這會建立一個可用的新網站,其中包括了一些預設的模板文件,以及你可以用來客制模板文件觀感(look and feel)的CSS樣式表:
第二步: 添加LINQ to SQL資料模型
LINQ to SQL是.NET 3.5中內建的O/RM(物件關係映射器),它允許你使用.NET類別來對關聯式資料庫建模。然後你可以使用LINQ來對資料庫進行查詢,以及在其中更新、插入和刪除資料。 LINQ to SQL完全支援事務,檢視表和預存程式。它還提供了簡易方式來將資料驗證和業務邏輯規則整合進你的資料模型。
開始使用ASP.NET動態資料網站的最簡便的方式是向你的專案中添加一個新的LINQ to SQL資料模型(右擊->添加新項->LINQ to SQL類別)。這會調出LINQ to SQL類別設計器。從你的伺服器管理器中把資料庫資料表拖拉到設計器表面,為你的資料庫資料定義(schema)來建立一些類別(包括其間的關係):
第三步: 在專案中啟用動態模板
在預設情形下,ASP.NET動態資料專案提供了內建支援,為你的LINQ to SQL和LINQ to Entities資料模型建立自動的「scaffolding(推導頁)」檢視。動態資料專案包括了一些模板頁和用戶控制項,可以自動地建立內建的瀏覽、編輯、選擇和刪除資料的用戶介面,這些介面是根據你加到專案裡的LINQ to SQL或者LINQ to Entities資料模型,在執行時動態構建的。
為啟用這個自動scaffolding的支援,打開你專案的web.config文件,找一下其中的dynamicData節,把它的enableTemplates屬性設為true:
註: 這個自動scaffolding特性在預設情形下為安全的原因是關掉的(我們要你明確地設置來啟用這個特性)。
註: 就像你在上面看到的那樣,ASP.NET動態資料配置節還提供了可選的URL映射支援,該支援允許你將你的動態scaffold網頁定製成你想要的任何URL格式。
第四步: 執行你的網站
按F5執行你的專案,預設情形下,你會被轉到default.aspx網頁,上面列出了你資料模型中的所有資料表物件:
註: default.aspx主頁是專案中的一個文件,如果你不喜歡這個網頁的樣子,你可以打開它,編輯成你想要的樣子。
點擊上面列表中的任何資料表名稱,會把你轉到一個動態資料網頁,其上列出了對應資料表中的資料:
預設的資料檢視網頁自動建立了有效的資料導航介面,這些介面包括了內建的資料分頁和編輯支援(其中啟用了ASP.NET AJAX):
資料檢視網頁自動推斷出關聯物件間的關係,提供了自動的過濾支援:
資料檢視網頁還自動地顯示你的物件間的關係,允許用戶輕鬆地在其間導航。例如,注意,產品的Category欄位允許我轉到特定產品的分類細節網頁上去:
資料檢視網頁還提供了自動選擇,編輯和刪除支援。注意下面,在行內編輯模式下,他們會自動推斷出友好的外鍵名稱(允許你編輯「Category」,從下拉框中挑一個名稱,而不是指定一個「CategoryID」整數):
所有這些都是自動工作的,而不用建立任何自訂的.aspx 網頁或者編寫任何自訂程式碼。所有的web用戶介面都是根據你的LINQ to SQL或LINQ to Entities資料模型動態生成的。
第五步: 進一步客制網站
對你的ORM資料模型現成提供上面所有的功能,對讓你的網站很快開始運作大有好處。在實現基本的網站體驗之後,你可以進行完全的客制,無論是資料驗證/業務邏輯層次還是用戶介面層次。
你可以添加標準的LINQ to SQL資料模型和業務驗證規則到你的資料模型中,以執行約束條件。動態資料網頁會自動執行這邏輯,提供基於這邏輯的適當的錯誤訊息和驗證用戶介面。
你也可以客制任何資料網頁中的用戶介面,動態資料專案允許你客制網站上所有資料網頁的預設觀感,以及客制用在網站上的所有欄位型別的預設觀感。你可以通過對建立新的動態資料專案時加到「/App_Shared」資料夾中的預設模板文件做編輯來實現這2種客制:
只要編輯上面的任何文件就可客制預設的資料網頁檢視或預設的資料欄位的外觀。
然後,你還可以通過在專案中明確地添加一個映射到某個特定資料檢視網頁的.aspx網頁,來覆蓋對應的用戶介面。例如,我可以往專案中加一個 \Products\ListDetails.aspx 來覆蓋預設產品的 ListDetails 行為:
然後,你可以往網頁上添加任何標準的ASP.NET資料控制項。你還可以在網頁上使用ASP.NET 3.5 Extensions CTP預覽版中發佈的有動態資料意識的ASP.NET資料控制項。這些控制項允許你完全客制用戶介面的觀感,同時還使用新的動態元資料提供器(dynamic meta-data provider)來推斷你的資料模型類間的關係和的元資料,以提供預設行為。
有關詳情
上面的示範只涉及了你可以通過ASP.NET動態資料專案來實現的幾個場景和功能。要瞭解詳情的話:
- 觀看David的網路廣播
- 看一下ASP.NET動態資料的快速上手檔案
- 訂閱David Ebbo, Scott Hunter, 和Marcin Dobosz的部落格
- 訪問ASP.NET動態資料論壇問問題
想瞭解有關LINQ to SQL,以及如何建立資料模型類的詳情,參閱我以前寫的下列部落格文章(【譯注】部落格園的韓現龍已經完成了其中的8篇,不久會在這裡貼出來):
- 第一部分:LINQ to SQL簡介(韓現龍譯)
- Part 2: Defining our Data Model Classes
- Part 3: Querying our Database
- Part 4: Updating our Database
- Part 5: Binding UI using the ASP:LinqDataSource Control
- Part 6: Retrieving Data Using Stored Procedures
- Part 7: Updating our Database using Stored Procedures
- Part 8: Executing Custom SQL Expressions
- Part 9: Using a Custom LINQ Expression with the <asp:LinqDataSource> control
你還可以觀看www.asp.net網站上此處的精彩LINQ和 LINQ to SQL 「How do I?(該如何做)」 錄影。
希望本文對你有所幫助,
Scott