新聞中心
ASP.NET中的DataSourceControl基類

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供宜章網(wǎng)站建設、宜章做網(wǎng)站、宜章網(wǎng)站設計、宜章網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、宜章企業(yè)網(wǎng)站模板建站服務,10年宜章做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
近一段時間以來,我發(fā)現(xiàn)博客又掀起了新的一輪討論熱潮,特別是針對WebForm和MVC的討論。這樣的討論可以促進大家的進步,同時也可以讓每個人對每種技術的了解都更加深入。不同的技術都有自己的***實踐,比如WebForm和MVC。如果我們大家在平常的開發(fā)實踐中都能遵從每一種技術基本使用原則,而不是濫用,那么我就不信不會得到***效果。
這里,我要討論的是如何合理的利用DataSourceControl,來簡化我們在頁面的一些數(shù)據(jù)操作,代替一部分的參數(shù)處理工作,并最終取代頁面的后臺代碼文件。這個思路,源于在ASP.NET Blogs的一篇文章(我目前已經(jīng)找不到該文章的鏈接的,大概意思就是講如果利用DataSourceControl來封裝一些復雜的數(shù)據(jù)處理)和NBearDataSource的基礎上提出來的,目前已經(jīng)應用了一個網(wǎng)站項目的開發(fā),并且自認為這是一種值推薦的WebForm開發(fā)方式。
在ASP.NET 2.0中,提出一種新的數(shù)據(jù)綁定方式,都就是使用DataSourceControl控件來查詢數(shù)據(jù),而數(shù)據(jù)控件本身只要指定DataSourceID即可以與DataSourceControl關聯(lián),而DataSourceControl本身會調用會根據(jù)不同的實現(xiàn)的自動進行參數(shù)的指定和查詢的工作。在ASP.NET 2.0,內置提供了ObjectDataSource,SqlDataSource和AccessDataSource??梢哉f,我們經(jīng)常使用的都會是 ObjectDataSource,但是由于功能限制的原因,很多情況下都還比較復雜。這時如果僅限于使用系統(tǒng)提供的DataSourceControl,那它的功能基本就廢了。
我對DataSouceControl的實踐是將不同模塊(或數(shù)據(jù)查詢)統(tǒng)統(tǒng)封裝成一個一個的DataSourceControl。DataSourceControl基類可以是ObjectDataSource,也可以是直接從System.UI.DataSourceControl繼承而來,在抽象方法的基礎進行實現(xiàn)。但是建議還是要一個處理公有邏輯的DataSourceControl基類,比如如果你使用NBear解決方案,那么你可以從NBearDataSource繼承而來;或者如果你使用LINQ,則可以創(chuàng)建一個LINQDataSource。以NBearDataSource為例來解析這樣做的好處:
1)在NBearDataSource中,對數(shù)據(jù)的查詢,我們只要指定實體類型,然后根據(jù)條件參數(shù)生成WhereClip,然后調用NBearDataSource.Filter方法,即可完成一個簡單實體的查詢。不需要調用Gateway查詢接口。
2)在NBearDataSource中,在數(shù)據(jù)提交時(新增和修改)轉入的數(shù)據(jù)賦值到對應的實體對象中。比如如果你使用FormView與DataSourceControl結合使用進行新增修改數(shù)據(jù),那么FormView里提交的字段,你就不需要一個一個的去從輸入控件中去獲取,使用Bind雙向綁定,在DataSourceControl就可以得到所有輸入字段值。而NBearDataSource更是會把所有提交的字段,都給我們賦值到一個指定的實體對象中,直接就可以保存到數(shù)據(jù)庫了
3)每個DataSourceControl,根據(jù)自己的功能不同,可以靈活進行修改的控制。并作為頁面,與邏輯服務的橋梁。
在這樣的實踐中,DataSourceControl是整個數(shù)據(jù)展示的核心,也是一個橋梁??赡芟喈斢贛VC中的C吧。但是這在網(wǎng)站型的項目當中應用有以下一些優(yōu)勢:
1)它可以與任何的數(shù)據(jù)綁定控件緊密的配合,在最合適時間進行數(shù)據(jù)的查詢和綁定工作,不需要用戶用工干預。防止了很多情況下重得綁定的可能。
2)使用DataSourceControl,可以讓后臺很多為了數(shù)據(jù)綁定而寫的代碼,包括分頁代碼,統(tǒng)統(tǒng)退休。
3)使用DataSourceControl,可以方便的讓某一部分數(shù)據(jù)在不同的頁面進行復用,而不用提供復雜的查詢條件和所需的查詢接口調用。
4)DataSourceControl可以封裝查詢參數(shù)的傳遞。比如你的查詢參數(shù)是從URL而來,那么你完全就可以把參數(shù)的處理交給DataSourceControl了。
5)DataSourceControl在數(shù)據(jù)提交時字段的自動映射方面非常的有優(yōu)勢,。
6)DataSourceControl非常靈活,如果我們的頁面外觀上不需要變動,只是在數(shù)據(jù)源需要進行一些修改,那么這時只需要修改DataSourceControl即可。
這樣做以后,項目中可能會有很多DataSourceControl,但是同時我們可以減少的是頁面后臺代碼,讓偶爾的一些服務器代碼寫在aspx文件中,讓頁面更易于維護,不用編譯就可以生效。同時如果你把DataSourceControl放在一個獨立的Library中,那它的復用就更加的容易了。
同樣的,這樣模式也不是到處都能用的。只適用于WebForm的數(shù)據(jù)綁定控件。(對于數(shù)據(jù)綁定控件的性能我就不再多說了。老趙已經(jīng)解釋了非常清楚了,重復一點數(shù)據(jù)綁定控件生成HTML的性能完全沒有問題,特別是它的組件化的思想非常的優(yōu)秀。)
***,給出一種最為簡單的復用。比如你的項目中有很多的枚舉類型,在頁面上你要顯示這些枚舉可能會需要一些代碼。這時候我們可以寫一個 EnumDataSource,只要在頁面上給EnumDataSource指定一個枚舉的類型,這時由EnumDataSource去讀取枚舉相關的名稱,值和中文描述。對于所以有的枚舉都使用EnumDataSource來綁定,不管是DropDownList還是CheckBoxList,那么你是不是覺得的非常的簡單呢?以上介紹ASP.NET中的DataSourceControl基類。
分享標題:ASP.NET中的DataSourceControl基類
本文鏈接:http://www.5511xx.com/article/dhehooh.html


咨詢
建站咨詢
