自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET中的DataSourceControl基類

開發(fā) 后端
本文介紹ASP.NET中的DataSourceControl基類,討論的是如何合理的利用DataSourceControl,來簡(jiǎn)化我們?cè)陧?yè)面的一些數(shù)據(jù)操作,代替一部分的參數(shù)處理工作,并最終取代頁(yè)面的后臺(tái)代碼文件。

ASP.NET中的DataSourceControl基類

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

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

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

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

1)在NBearDataSource中,對(duì)數(shù)據(jù)的查詢,我們只要指定實(shí)體類型,然后根據(jù)條件參數(shù)生成WhereClip,然后調(diào)用NBearDataSource.Filter方法,即可完成一個(gè)簡(jiǎn)單實(shí)體的查詢。不需要調(diào)用Gateway查詢接口。

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

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

在這樣的實(shí)踐中,DataSourceControl是整個(gè)數(shù)據(jù)展示的核心,也是一個(gè)橋梁??赡芟喈?dāng)于MVC中的C吧。但是這在網(wǎng)站型的項(xiàng)目當(dāng)中應(yīng)用有以下一些優(yōu)勢(shì):

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

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

3)使用DataSourceControl,可以方便的讓某一部分?jǐn)?shù)據(jù)在不同的頁(yè)面進(jìn)行復(fù)用,而不用提供復(fù)雜的查詢條件和所需的查詢接口調(diào)用。

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

5)DataSourceControl在數(shù)據(jù)提交時(shí)字段的自動(dòng)映射方面非常的有優(yōu)勢(shì),。

6)DataSourceControl非常靈活,如果我們的頁(yè)面外觀上不需要變動(dòng),只是在數(shù)據(jù)源需要進(jìn)行一些修改,那么這時(shí)只需要修改DataSourceControl即可。

這樣做以后,項(xiàng)目中可能會(huì)有很多DataSourceControl,但是同時(shí)我們可以減少的是頁(yè)面后臺(tái)代碼,讓偶爾的一些服務(wù)器代碼寫在aspx文件中,讓頁(yè)面更易于維護(hù),不用編譯就可以生效。同時(shí)如果你把DataSourceControl放在一個(gè)獨(dú)立的Library中,那它的復(fù)用就更加的容易了。

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

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

【編輯推薦】

  1. 微軟發(fā)布ASP.NET MVC 2預(yù)覽版 多項(xiàng)功能更新
  2. ASP.NET服務(wù)器自定義控件安全準(zhǔn)則
  3. ASP.NET編程規(guī)范之編碼規(guī)范淺析
  4. 關(guān)于ASP.NET Session的一點(diǎn)認(rèn)識(shí)
  5. ASP.NET編程工具ASP.NET Web Matrix詳細(xì)介紹
責(zé)任編輯:佚名 來源: 老趙點(diǎn)滴
相關(guān)推薦

2009-07-22 18:08:00

ASP.NET基類

2009-07-28 17:38:02

ASP.NET多態(tài)抽象基類

2009-07-24 10:10:22

ASP.NET

2009-07-24 16:17:42

WebRequestEASP.NET

2009-07-29 13:57:53

創(chuàng)建SlideShowASP.NET

2009-08-05 18:17:16

ASP.NET控件開發(fā)基類

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-30 12:35:51

ASP.NET中的對(duì)象

2009-07-20 14:54:23

HttpWorkerRASP.NET

2009-07-30 13:28:55

ASP.NET中的ja

2009-07-20 13:32:24

ScriptManagASP.NET

2009-07-23 16:20:48

HTTP協(xié)議ASP.NET

2009-07-20 15:19:52

ViewState本質(zhì)ASP.NET

2009-07-31 10:08:33

OutputCache

2009-07-22 17:55:52

2009-08-04 18:05:37

動(dòng)態(tài)編譯ASP.NET

2009-07-31 09:58:20

URL映射ASP.NET

2009-07-27 13:01:28

TreeViewASP.NET
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)