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















 
 
 
 
 
 
 