溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中如何使用DataSourceControl基類

發(fā)布時間:2021-07-15 15:35:47 來源:億速云 閱讀:171 作者:Leah 欄目:編程語言

ASP.NET中如何使用DataSourceControl基類,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

ASP.NET中的DataSourceControl基類

近一段時間以來,我發(fā)現博客又掀起了新的一輪討論熱潮,特別是針對WebForm和MVC的討論。這樣的討論可以促進大家的進步,同時也可以讓每個人對每種技術的了解都更加深入。不同的技術都有自己的***實踐,比如WebForm和MVC。如果我們大家在平常的開發(fā)實踐中都能遵從每一種技術基本使用原則,而不是濫用,那么我就不信不會得到***效果。

這里,我要討論的是如何合理的利用DataSourceControl,來簡化我們在頁面的一些數據操作,代替一部分的參數處理工作,并最終取代頁面的后臺代碼文件。這個思路,源于在ASP.NET Blogs的一篇文章(我目前已經找不到該文章的鏈接的,大概意思就是講如果利用DataSourceControl來封裝一些復雜的數據處理)和NBearDataSource的基礎上提出來的,目前已經應用了一個網站項目的開發(fā),并且自認為這是一種值推薦的WebForm開發(fā)方式。

在ASP.NET 2.0中,提出一種新的數據綁定方式,都就是使用DataSourceControl控件來查詢數據,而數據控件本身只要指定DataSourceID即可以與DataSourceControl關聯,而DataSourceControl本身會調用會根據不同的實現的自動進行參數的指定和查詢的工作。在ASP.NET 2.0,內置提供了ObjectDataSource,SqlDataSource和AccessDataSource??梢哉f,我們經常使用的都會是 ObjectDataSource,但是由于功能限制的原因,很多情況下都還比較復雜。這時如果僅限于使用系統(tǒng)提供的DataSourceControl,那它的功能基本就廢了。

我對DataSouceControl的實踐是將不同模塊(或數據查詢)統(tǒng)統(tǒng)封裝成一個一個的DataSourceControl。DataSourceControl基類可以是ObjectDataSource,也可以是直接從System.UI.DataSourceControl繼承而來,在抽象方法的基礎進行實現。但是建議還是要一個處理公有邏輯的DataSourceControl基類,比如如果你使用NBear解決方案,那么你可以從NBearDataSource繼承而來;或者如果你使用LINQ,則可以創(chuàng)建一個LINQDataSource。以NBearDataSource為例來解析這樣做的好處:

1)在NBearDataSource中,對數據的查詢,我們只要指定實體類型,然后根據條件參數生成WhereClip,然后調用NBearDataSource.Filter方法,即可完成一個簡單實體的查詢。不需要調用Gateway查詢接口。

2)在NBearDataSource中,在數據提交時(新增和修改)轉入的數據賦值到對應的實體對象中。比如如果你使用FormView與DataSourceControl結合使用進行新增修改數據,那么FormView里提交的字段,你就不需要一個一個的去從輸入控件中去獲取,使用Bind雙向綁定,在DataSourceControl就可以得到所有輸入字段值。而NBearDataSource更是會把所有提交的字段,都給我們賦值到一個指定的實體對象中,直接就可以保存到數據庫了

3)每個DataSourceControl,根據自己的功能不同,可以靈活進行修改的控制。并作為頁面,與邏輯服務的橋梁。

在這樣的實踐中,DataSourceControl是整個數據展示的核心,也是一個橋梁??赡芟喈斢贛VC中的C吧。但是這在網站型的項目當中應用有以下一些優(yōu)勢:

1)它可以與任何的數據綁定控件緊密的配合,在最合適時間進行數據的查詢和綁定工作,不需要用戶用工干預。防止了很多情況下重得綁定的可能。

2)使用DataSourceControl,可以讓后臺很多為了數據綁定而寫的代碼,包括分頁代碼,統(tǒng)統(tǒng)退休。

3)使用DataSourceControl,可以方便的讓某一部分數據在不同的頁面進行復用,而不用提供復雜的查詢條件和所需的查詢接口調用。

4)DataSourceControl可以封裝查詢參數的傳遞。比如你的查詢參數是從URL而來,那么你完全就可以把參數的處理交給DataSourceControl了。

5)DataSourceControl在數據提交時字段的自動映射方面非常的有優(yōu)勢,。

6)DataSourceControl非常靈活,如果我們的頁面外觀上不需要變動,只是在數據源需要進行一些修改,那么這時只需要修改DataSourceControl即可。

這樣做以后,項目中可能會有很多DataSourceControl,但是同時我們可以減少的是頁面后臺代碼,讓偶爾的一些服務器代碼寫在aspx文件中,讓頁面更易于維護,不用編譯就可以生效。同時如果你把DataSourceControl放在一個獨立的Library中,那它的復用就更加的容易了。

同樣的,這樣模式也不是到處都能用的。只適用于WebForm的數據綁定控件。(對于數據綁定控件的性能我就不再多說了。老趙已經解釋了非常清楚了,重復一點數據綁定控件生成HTML的性能完全沒有問題,特別是它的組件化的思想非常的優(yōu)秀。)

***,給出一種最為簡單的復用。比如你的項目中有很多的枚舉類型,在頁面上你要顯示這些枚舉可能會需要一些代碼。這時候我們可以寫一個 EnumDataSource,只要在頁面上給EnumDataSource指定一個枚舉的類型,這時由EnumDataSource去讀取枚舉相關的名稱,值和中文描述。對于所以有的枚舉都使用EnumDataSource來綁定,不管是DropDownList還是CheckBoxList,那么你是不是覺得的非常的簡單呢?以上介紹ASP.NET中的DataSourceControl基類。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI