ASP.NET 2.0數(shù)據(jù)綁定的發(fā)展簡述
ASP.NET 2.0數(shù)據(jù)綁定:為什么需要新的數(shù)據(jù)源模型
數(shù)據(jù)綁定是開發(fā)人員在 ASP.NET 1.x 中發(fā)現(xiàn)的最令人愉快的意外功能之一。與 Active Server Pages 對數(shù)據(jù)訪問的支持相比,數(shù)據(jù)綁定是簡單性和有效性的非凡結合。然而,如果根據(jù)真正開發(fā)人員的需要進行衡量,則它還不夠完美。其局限不在于總體功能方面,而在于開發(fā)人員必須編寫大量代碼來處理甚至非常簡單和常見的操作(例如,分頁、排序或刪除)。為了彌補這一缺陷,ASP.NET 2.0 添加了一種新的數(shù)據(jù)源模型(請參閱我的文章: More Load, Less Code with the Data Enhancements of ASP.NET 2.0)。它包括很多不帶 UI 的新控件,這些控件將數(shù)據(jù)綁定控件的可視部分和數(shù)據(jù)容器聯(lián)系起來。開發(fā)人員需要在 ASP.NET 1.x 中編寫的絕大部分代碼經過適當?shù)姆纸夂蛣?chuàng)作,現(xiàn)在基本上都被嵌入到一系列新的控件中:數(shù)據(jù)源組件。
使用數(shù)據(jù)源組件有很多好處 — 首先,可以得到完全聲明性的數(shù)據(jù)綁定模型。新模型減少了以內聯(lián)方式插入到 ASPX 資源中或者分散在代碼隱藏類中的松散代碼。新的數(shù)據(jù)綁定體系結構強制開發(fā)人員遵守嚴格的規(guī)則。此外,它還從本質上改變了代碼的質量。附加到事件的較長代碼塊通常會消失,而被只是插入到現(xiàn)有框架中的組件所取代。這些數(shù)據(jù)源組件派生自抽象類,實現(xiàn)了已知的接口,并且總體而言意味著更高級別的可重用性。
Nikhil Kothari 的有關控件開發(fā)的優(yōu)秀著作 — Developing Microsoft ASP.NET Server Controls and Components — 幫助成千上萬的開發(fā)人員生成自定義控件,并且說明了設計和實現(xiàn)的最佳做法。但是,一本書 — 無論它有多么偉大 — 都永遠無法取代一個更好的系統(tǒng)框架。借助于 ASP.NET 2.0,您還獲得了一個完全重新設計的類圖 — 當您沿著類樹從基礎類向葉子類滾動時,它能夠添加更具體的數(shù)據(jù)綁定功能。通過新的數(shù)據(jù)綁定控件層次結構,所有開發(fā)人員都可以更容易地選取正確的類來加以繼承,以便生成他們自己的自定義數(shù)據(jù)綁定控件。
在本文中,您將提前了解 ASP.NET 2.0 數(shù)據(jù)綁定模型中的能夠對自定義控件產生影響的更改。在此過程中,您將了解可用的新基類以及新的高質量自定義控件的新要求。
ASP.NET 2.0數(shù)據(jù)綁定:數(shù)據(jù)綁定控件
ASP.NET 2.0 數(shù)據(jù)源模型并未要求必須使用新的控件(例如,GridView 和 FormView);它仍然能夠與舊樣式的控件(例如,DataGrid 和 CheckBoxList)協(xié)同工作。這對于控件開發(fā)人員而言意味著什么呢?有兩個截然不同類型的數(shù)據(jù)源需要處理 — 傳統(tǒng)的基于 IEnumerable 的數(shù)據(jù)容器(例如,DataView 和集合)以及數(shù)據(jù)源控件(例如,SqlDataSource 和 ObjectDataSource)。最后,無論數(shù)據(jù)源是 ADO.NET 對象、自定義集合還是數(shù)據(jù)源組件,ASP.NET 2.0 數(shù)據(jù)綁定控件都必須能夠將傳入的任何數(shù)據(jù)規(guī)格化為可枚舉的集合。
在 ASP.NET 1.x 中,文檔在某種程度上領先于框架。文檔正確地標識和討論了三個類型的數(shù)據(jù)綁定控件 — 標準控件、列表控件和復合控件。任何只是提供 DataBind 方法和 DataSource 屬性的非空實現(xiàn)的控件都屬于第一個類別。列表控件是下列兩者的有趣結合:高級布局屬性(例如,RepeatColumns 和 RepeatLayout),以及為綁定的每個數(shù)據(jù)元素重復的固定的嵌入式項模板。最后,復合控件負責通過組合一個或多個現(xiàn)有控件來設計最終的用戶界面。文檔準確地闡述了與創(chuàng)建上述類型的控件相關的任何問題;然而,ASP.NET 框架卻并未提供很多基類來簡化開發(fā)人員的任務。圖 1 顯示了 ASP.NET 2.0 中的新的數(shù)據(jù)綁定控件層次結構。請注意顯示為黃色的基類以及它們在整個類樹中的分布。
圖 1.
對圖 1 中呈現(xiàn)的基類進行一番觀察是一件有趣的事情。它們在表 1 中列出并進行了詳細說明。
類 |
說明 |
---|---|
BaseDataBoundControl |
數(shù)據(jù)綁定控件的根類。執(zhí)行數(shù)據(jù)綁定并驗證任何綁定數(shù)據(jù)。 |
DataBoundControl |
包含用于與數(shù)據(jù)源控件和數(shù)據(jù)容器進行通信的邏輯??梢詮脑擃惱^承以生成標準的數(shù)據(jù)綁定控件。 |
ListControl |
列表控件的基類,提供 Items 集合和高級布局呈現(xiàn)功能。 |
CompositeDataBoundControl |
實現(xiàn)復合控件所必需的典型代碼,包括在進行回發(fā)之后根據(jù)視圖狀態(tài)還原控件樹的代碼。 |
HierarchicalDataBoundControl |
基于樹的分層控件的根類。 |
表 1. ASP.NET 2.0 中的基本數(shù)據(jù)綁定類
對于任何曾經花費巨大精力來創(chuàng)建能夠管理自己的數(shù)據(jù)集合并且能夠正確地從視圖狀態(tài)還原的、具有豐富功能的數(shù)據(jù)綁定控件的人而言,這些類特別受歡迎。
以上就簡單介紹了ASP.NET 2.0數(shù)據(jù)綁定功能。
【編輯推薦】