ASPNET知識(shí)復(fù)習(xí)資料11_第1頁(yè)
ASPNET知識(shí)復(fù)習(xí)資料11_第2頁(yè)
ASPNET知識(shí)復(fù)習(xí)資料11_第3頁(yè)
ASPNET知識(shí)復(fù)習(xí)資料11_第4頁(yè)
ASPNET知識(shí)復(fù)習(xí)資料11_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第頁(yè)ASP課程知識(shí)一、網(wǎng)頁(yè)基礎(chǔ)知識(shí)HTML是英文HyperTextMarkupLanguage的縮寫,中文的意思是超文本標(biāo)記語(yǔ)言。它是通過(guò)嵌入代碼或標(biāo)記的方式來(lái)表明文本格式的國(guó)際標(biāo)準(zhǔn)。用它編寫的文件擴(kuò)展名是.html或.htm,這種網(wǎng)頁(yè)文件的內(nèi)容是靜態(tài)的,而且無(wú)法及后臺(tái)數(shù)據(jù)庫(kù)結(jié)合使用。在網(wǎng)站開發(fā)中,XML的應(yīng)用也相當(dāng)廣泛,ASPWeb應(yīng)用程序的配置文件machine.config及web.config文件都是基于XML文檔的,甚至連ADO中的DataSet對(duì)象,其內(nèi)部也是采用XML描述的。XML即可擴(kuò)展標(biāo)記語(yǔ)言(ExtensibleMarkupLanguage),用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。XML是標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)的子集,非常適合Web傳輸。前面已經(jīng)指出,使用純粹的HTML格式的網(wǎng)頁(yè)時(shí)靜態(tài)網(wǎng)頁(yè),下面區(qū)分一下靜態(tài)網(wǎng)頁(yè)和動(dòng)態(tài)網(wǎng)頁(yè)。在網(wǎng)站設(shè)計(jì)中,純粹HTML格式的網(wǎng)頁(yè)通常被稱為靜態(tài)網(wǎng)頁(yè),早期的網(wǎng)站一般都是由靜態(tài)網(wǎng)頁(yè)制作的。靜態(tài)網(wǎng)頁(yè)是相對(duì)于動(dòng)態(tài)網(wǎng)頁(yè)而言,是指沒(méi)有后臺(tái)數(shù)據(jù)庫(kù)、不含程序和不可交互的網(wǎng)頁(yè)。你編的是什么它顯示的就是什么,不會(huì)有任何改變。靜態(tài)網(wǎng)頁(yè)相對(duì)更新起來(lái)比較麻煩,適用于一般更新較少的展示型網(wǎng)站。靜態(tài)網(wǎng)頁(yè)的網(wǎng)址形式通常為htm(超文本標(biāo)記語(yǔ)言)結(jié)尾,還有就是以超文本標(biāo)記語(yǔ)言(.htm、.html)、.shtml、.xml(可擴(kuò)展標(biāo)記語(yǔ)言)等為后綴的。所謂動(dòng)態(tài)網(wǎng)頁(yè)是指網(wǎng)頁(yè)文件里包含了程序代碼,通過(guò)后臺(tái)數(shù)據(jù)庫(kù)及Web服務(wù)器的信息交互,由后臺(tái)數(shù)據(jù)庫(kù)提供實(shí)時(shí)數(shù)據(jù)更新和數(shù)據(jù)查詢服務(wù)。動(dòng)態(tài)頁(yè)面依靠瀏覽器端和服務(wù)器端的互動(dòng)來(lái)實(shí)現(xiàn),服務(wù)器端可以實(shí)時(shí)處理瀏覽器端的請(qǐng)求,然后將響應(yīng)結(jié)果傳遞給瀏覽器,這樣動(dòng)態(tài)頁(yè)面就顯示在瀏覽器中了。這種網(wǎng)頁(yè)的后綴名稱一般根據(jù)不同的程序設(shè)計(jì)語(yǔ)言不同,如常見的有.aspx、.asp、.jsp、.php等形式為后綴。動(dòng)態(tài)網(wǎng)頁(yè)能夠根據(jù)不同請(qǐng)求和不同訪問(wèn)者而顯示不同內(nèi)容。如常見的BBS、留言板和購(gòu)物系統(tǒng)通常用動(dòng)態(tài)網(wǎng)頁(yè)實(shí)現(xiàn)。動(dòng)態(tài)網(wǎng)頁(yè)的制作相對(duì)復(fù)雜,需要用到ASP、PHP、ISP和ASP等專門的動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)語(yǔ)言。二、ASP基礎(chǔ)知識(shí)2000年6月,Microsoft公司推出了技術(shù)框架,ASP則是該框架的一部分。Framework的的核心組件是Framework基礎(chǔ)類庫(kù)和公共語(yǔ)言運(yùn)行庫(kù)。作為一種新的Web技術(shù),ASP提供了多種方便實(shí)用的新功能,譬如具有豐富的Web控件,引入了ADO,對(duì)多種開發(fā)語(yǔ)言提供支持,可以選擇采用代碼后置技術(shù)/代碼隱藏模型,使得后臺(tái)程序代碼及前臺(tái)頁(yè)面文件分開,同時(shí)支持更多的事件處理?!玖私狻緼SP是在ASP的基礎(chǔ)上發(fā)展起來(lái)的,由于具有方便、靈活、高效、安全等特點(diǎn),成為了目前主流的Web開發(fā)技術(shù)之一。然而,ASP不只是ASP的一個(gè)升級(jí)版本,其許多新功能也不僅僅是對(duì)ASP的改進(jìn),因此ASP是創(chuàng)建Web應(yīng)用程序的全新理念和方法,它及ASP的主要區(qū)別有以下幾點(diǎn):(1)ASP只能使用腳本語(yǔ)言,主要依靠VBScript和JavaScript。ASP則沒(méi)有這個(gè)問(wèn)題,它可以使用Framework支持的任何一種功能完善的編程語(yǔ)言。(2)ASP中,ASP代碼及HTML代碼沒(méi)有分開,各種混雜的代碼不方便前期的設(shè)計(jì)和后期的維護(hù)。在ASP中,通過(guò)采用代碼后置技術(shù),這個(gè)問(wèn)題得到了解決。(3)ASP帶有大量的控件,可以非常簡(jiǎn)單地用在Web頁(yè)面當(dāng)中。而在ASP中,程序員就需要利用對(duì)象和幾個(gè)組件來(lái)完成在ASP中非常容易實(shí)現(xiàn)的功能。在ASPWeb應(yīng)用程序中,可以采用代碼后置方式,也可以采用代碼內(nèi)嵌的方式,也可以采用兩者混合的方式,網(wǎng)站開發(fā)人員可以根據(jù)實(shí)際情況進(jìn)行選擇。代碼后置是微軟的一項(xiàng)技術(shù),也是我們編寫ASPWeb應(yīng)用程序時(shí)常用的編碼方式。一般情況下,采用代碼后置技術(shù)時(shí),ASPWeb頁(yè)面對(duì)應(yīng)的.asp文件中沒(méi)有程序代碼,只有控件和HTML代碼,而在.cs中編寫相關(guān)的后臺(tái)C#代碼。及代碼后置相對(duì)應(yīng)的是代碼內(nèi)嵌,可以不使用后置的.cs文件,完全在.asp文件中編寫代碼,我們只需在創(chuàng)建頁(yè)面時(shí),不選擇“將代碼放在單獨(dú)的文件中”復(fù)選框,將代碼編寫在<%%>之間就可以了。采用代碼后置技術(shù)的好處是后臺(tái)程序代碼和前臺(tái)頁(yè)面內(nèi)容分離,使網(wǎng)站代碼結(jié)構(gòu)更清晰,可讀性好,便于編寫和維護(hù)。前面已經(jīng)指出,ASP相比ASP而言支持更多的事件處理。我們知道,普通的Windows應(yīng)用程序也支持事件模型。ASP中的Web窗體事件模型和Windows事件模型有相似的地方,也有區(qū)別。ASP采用類似于Windows的事件處理程序,當(dāng)用戶在Web窗體中執(zhí)行某一個(gè)動(dòng)作時(shí),將觸發(fā)一個(gè)事件,程序員可以針對(duì)這些事件編寫程序,對(duì)用戶操作進(jìn)行響應(yīng)。Web窗體的事件模型及Windows事件并不完全相同。Windows事件的事件觸發(fā)和事件處理都在本地發(fā)生。例如,用戶單擊Windows窗體中的一個(gè)按鈕,可以觸發(fā)該按鈕的Click事件,程序員可以為事件響應(yīng)程序中編寫代碼,響應(yīng)用戶的操作。Web窗體事件則是由用戶在客戶端觸發(fā)事件,事件響應(yīng)程序在服務(wù)器端執(zhí)行,然后再將執(zhí)行結(jié)果返回到客戶端。IIS是InternetInformationServer的縮寫,即Internet信息服務(wù),它是Microsoft公司開發(fā)的Web服務(wù)器應(yīng)用程序,IIS可以方便地建立強(qiáng)大、靈活而安全的Internet站點(diǎn),而且它完全支持ASP技術(shù)。在WindowsXP等操作系統(tǒng)中,默認(rèn)的系統(tǒng)安裝中并沒(méi)有包含IIS,我們需要掌握安裝IIS的方法和步驟:首先,在操作系統(tǒng)中打開控制面板,雙擊“添加或刪除程序”,在彈出的對(duì)話框中,選擇”添加或刪除Windows組建”,在彈出的下一個(gè)對(duì)話框中,選中“Internet信息服務(wù)(IIS)”,然后根據(jù)提示一步一步操作,就可以實(shí)現(xiàn)IIS的安裝。簡(jiǎn)而言之,IIS可以通過(guò)添加Windows組件安裝。在一臺(tái)用作Web服務(wù)器的電腦上,可以同時(shí)運(yùn)行多個(gè)Web站點(diǎn),因?yàn)镮IS可以同時(shí)管理多個(gè)Web應(yīng)用程序。IIS的功能強(qiáng)大,不僅能夠管理Web站點(diǎn),也能管理FTP站點(diǎn)。IIS中,網(wǎng)站的默認(rèn)端口是80,當(dāng)然,我們可以修改這一默認(rèn)的設(shè)置。IIS中,默認(rèn)文檔的文件名一般為default或index,擴(kuò)展名則可以是.htm、asp或aspx等已為服務(wù)器支持的文件擴(kuò)展名。當(dāng)然,IIS中,網(wǎng)站的默認(rèn)文檔文件名不一定非得是default或index,我們可以設(shè)置為任意其他合法的文件名。ASPWeb應(yīng)用程序的開發(fā)中,會(huì)牽涉到多種類型的文件,這些文件的作用不一樣,后綴名也不一樣,在此以表格的形式加以分類比較。表1ASPWeb項(xiàng)目中的文件類型匯總文件類型文件后綴名或全稱備注靜態(tài)頁(yè)面文件.htm或者.htmlASP前臺(tái)頁(yè)面文件.aspxASP頁(yè)面后臺(tái)C#程序文件.aspx.csC#程序或類文件.cs全局程序類文件Global.asaxASP母版頁(yè)文件.master用戶控件文件.ascxASP服務(wù)器配置文件Machine.configASPWeb程序配置文件Web.config三、ASP頁(yè)面類及常用內(nèi)置對(duì)象。Framework包含了大量的對(duì)象類庫(kù),這些對(duì)象類庫(kù)為提供了可以使用的功能。編程人員只要編寫較少的代碼,就可以簡(jiǎn)單快速地完成工作。下面簡(jiǎn)要討論ASP中最常用的Page類以及最核心的對(duì)象Request、Response、Server、Application、Session以及Cookies。在FrameWork中,Page類是ASP應(yīng)用程序在.aspx文件中構(gòu)建所有對(duì)象的基類。Page類在System.Web.UI空間中定義。Web頁(yè)面從初始化、加載到頁(yè)面卸載,會(huì)經(jīng)歷頁(yè)面模型生命周期的各個(gè)階段,觸發(fā)各種事件,其中,頁(yè)面加載時(shí)觸發(fā)的事件是Page_Load,頁(yè)面卸載時(shí)觸發(fā)的事件是Page_Unload。Page對(duì)象具有很多屬性,這里討論IsValid屬性和IsPostBack屬性。在ASP中,頁(yè)面的IsValid屬性用于獲取一個(gè)布爾值,該值用于指示頁(yè)驗(yàn)證是否成功,如果為true,則驗(yàn)證通過(guò),否則意味頁(yè)面沒(méi)有通過(guò)驗(yàn)證。在ASP中,要判斷頁(yè)面是第一次加載運(yùn)行還是由于客戶端返回?cái)?shù)據(jù)而加載運(yùn)行,必須通過(guò)Web頁(yè)面的IsPostBack屬性。IsPostBack屬性是布爾類型的。若Web頁(yè)的IsPostBack的值為false,則表示該頁(yè)面是第一次加載運(yùn)行;若Web頁(yè)的IsPostBack的值為true,則表示當(dāng)前網(wǎng)頁(yè)是由于客戶端返回?cái)?shù)據(jù)而加載的。Response對(duì)象稱為響應(yīng)對(duì)象,表示W(wǎng)eb服務(wù)器對(duì)客戶請(qǐng)求的響應(yīng),將信息傳遞給用戶。使用Response對(duì)象的Write方法,可以將字符串輸出到網(wǎng)頁(yè)中,當(dāng)然,該方法并不是講數(shù)據(jù)直接顯示在網(wǎng)頁(yè)中,而是輸出到HTML代碼中。使用Response對(duì)象的Redirect方法,可以實(shí)現(xiàn)網(wǎng)頁(yè)轉(zhuǎn)向,就是在瀏覽器中顯示新網(wǎng)頁(yè)的內(nèi)容。使用Response對(duì)象還可以寫入Cookies數(shù)據(jù)。特別需要注意的是,在ASP中,使用Response.Write方法輸出字符串時(shí),字符串中不能直接包含雙引號(hào)“””,否則會(huì)發(fā)生歧義。如果需要在網(wǎng)頁(yè)中輸出雙引號(hào)字符,需要用“\”“替換“”“。Request對(duì)象也稱為請(qǐng)求對(duì)象,通過(guò)它可以從客戶端接收信息,這些信息包括通過(guò)網(wǎng)址參數(shù)傳遞的信息、HTML表單中用POST或GET方法傳遞的參數(shù)和Cookies等。Server對(duì)象是用于獲取服務(wù)器的相關(guān)信息的對(duì)象,它對(duì)應(yīng)的ASP類是HttpServerUtility。使用Server.MapPath方法可以將虛擬路徑轉(zhuǎn)換為服務(wù)器上的實(shí)際物理目錄。用法如下所示:<真實(shí)物理路徑>=Server.MapPath(<虛擬路徑>)Application對(duì)象,也稱記錄應(yīng)用程序參數(shù)的對(duì)象,其用途是記錄整個(gè)網(wǎng)站的信息,是集中的網(wǎng)站范圍內(nèi)的變量存儲(chǔ)方式,可以在網(wǎng)站內(nèi)部的任何地方使用。另外,Application對(duì)象可以提供給多個(gè)客戶端用戶共享信息,即所有的客戶端用戶都可以訪問(wèn)Application對(duì)象中保存的數(shù)據(jù)。在程序中,訪問(wèn)Application對(duì)象的操作主要有讀操作及寫操作。其中,寫操作表示添加數(shù)據(jù)或值到Application對(duì)象中;讀操作表示從Application對(duì)象中取到數(shù)據(jù)。為了防止兩個(gè)以上的用戶同時(shí)訪問(wèn)Application對(duì)象,可以使用Application.Lock方法將Application對(duì)象鎖定,訪問(wèn)完成后使用Application.UnLock方法解除鎖定,示例代碼如下:protectedvoidPage_Load(objectsender,EventArgse)Response.Write("<h2align=\"center\"><fontcolor=\"#0000FF\">網(wǎng)站計(jì)數(shù)器的演示程序</font></h2>");Application.Lock();if(Application["Counter"]==null)Application["Counter"]=1;elseApplication["Counter"]=int.Parse(Application["Counter"].ToString())+1;Response.Write("<palign=\"center\">您是本站第"+Application["Counter"].ToString()+"位訪客,歡迎光臨</p>");Application.UnLock();對(duì)Web應(yīng)用程序而言,Global.asax文件是一個(gè)可選文件,網(wǎng)站開發(fā)人員可以在該文件中指定跟Application對(duì)象相關(guān)的某個(gè)事件發(fā)生時(shí)執(zhí)行的代碼。換言之,及Application對(duì)象相關(guān)的Application_Start、Application_Error和Application_End等事件都應(yīng)該在Global.asax文件中定義。Global.asax文件必須存放在應(yīng)用程序的根目錄中,而且每個(gè)應(yīng)用程序只能有一個(gè)Global.asax文件。當(dāng)然,Global.asax文件既然是一個(gè)可選文件,意味著一個(gè)網(wǎng)站中可以連一個(gè)Global.asax文件。ASPWeb應(yīng)用程序在用戶首次打開應(yīng)用程序中的某一網(wǎng)頁(yè)時(shí)啟動(dòng),在服務(wù)器關(guān)閉時(shí)終止。在此期間,Application對(duì)象都是一直有效的。使用Session對(duì)象可存儲(chǔ)特定的用戶會(huì)話所需的信息。當(dāng)用戶在應(yīng)用程序(即網(wǎng)站)的頁(yè)面之間跳轉(zhuǎn)時(shí),存儲(chǔ)在Session對(duì)象中的變量不會(huì)清除。當(dāng)超過(guò)設(shè)置Session變量對(duì)象的有效時(shí)間時(shí),Session變量就會(huì)消失。Session對(duì)象的變量默認(rèn)的有效期為20分鐘。Application對(duì)象及Session對(duì)象是有區(qū)別的,兩者的差異主要體現(xiàn)為如下三點(diǎn):1.共享及獨(dú)享。Application對(duì)象記錄的是所有瀏覽器端共享的變量,而Session對(duì)象只記錄單個(gè)瀏覽器端專用的變量。即每個(gè)訪問(wèn)網(wǎng)站的瀏覽器用戶具有各自的Session對(duì)象變量,但共享一個(gè)Application對(duì)象。2.生存期不同。Session對(duì)象的變量具有有效期,超過(guò)該有效期則消失。Application對(duì)象的變量在Web服務(wù)器軟件關(guān)閉或重啟之前一直有效,并不會(huì)因?yàn)閭€(gè)別或所有終端用戶關(guān)閉瀏覽器而消失。3.操作方法不同。Session對(duì)象需要設(shè)置生存期,Application對(duì)象則不必設(shè)置生存期。Application對(duì)象由于是共享的,在操作相關(guān)變量的時(shí)候,需要加鎖和解鎖操作,Session對(duì)象則不必如此。Session對(duì)象有兩個(gè)事件,即Session_Start和Session_End??梢栽谌治募礼lobal.asax中為這兩個(gè)事件指定執(zhí)行的代碼。當(dāng)會(huì)話開始時(shí),服務(wù)器在Global.asax文件中查找并處理Session_Start事件對(duì)應(yīng)的代碼;在會(huì)話結(jié)束時(shí),服務(wù)器將處理Session_End事件對(duì)應(yīng)的代碼。Cookies及Session和Application對(duì)象類似,也是一種集合對(duì)象,都用來(lái)保存數(shù)據(jù)。但Cookies和其他對(duì)象的最大不同在于Cookies將數(shù)據(jù)存放在客戶端的磁盤上,而Application和Session對(duì)象將數(shù)據(jù)存放在Web服務(wù)器上。通過(guò)Response對(duì)象可以寫入Cookies數(shù)據(jù),使用Request對(duì)象既可以讀取也可以寫入Cookie數(shù)據(jù)。設(shè)定Cookie變量的生命周期,使用Cookie變量的Expires方法,其語(yǔ)法如下:Response.Cookies(CookieName).Expires=#日期#四、ASP控件。ASP的服務(wù)器控件分為Web服務(wù)器控件、HTML服務(wù)器控件和用戶自定義控件三大類。對(duì)于ASPWeb開發(fā),離不開這些控件的運(yùn)用,因此,對(duì)于一些常用控件的重要屬性、方法和事件,我們一定要熟練掌握并靈活運(yùn)用。下面,先簡(jiǎn)要介紹Web服務(wù)器控件。對(duì)于所有的Web服務(wù)器控件,有一些重要屬性是相同的,例如ID、Enabled、Visible、AccessKey、AutoPostBack等屬性。ID屬性是控件的名稱,在同一個(gè)頁(yè)面中要求每個(gè)控件都使用唯一的ID來(lái)標(biāo)識(shí)。Enabled屬性決定在最終頁(yè)面上控件能否響應(yīng)用戶的操作,取值為false,則控件不可用。Visible屬性決定控件在運(yùn)行頁(yè)面上的可見性,取值為false,則控件在頁(yè)面上不可見。AccessKey屬性用于設(shè)置控件使用的鍵盤快捷鍵。AutoPostBack屬性是絕大多數(shù)Web服務(wù)器控件都具有的屬性,如果希望控件內(nèi)容變換后立即回傳表單至Web服務(wù)器,則需要將控件的AutoPostBack屬性設(shè)置為true。Label也稱為標(biāo)簽控件,一般用來(lái)給文本框、列表框、組合框等控件添加描述性的文字,或給窗體添加說(shuō)明文字,或用來(lái)顯示處理結(jié)果等信息。Label控件顯示的內(nèi)容可以在屬性窗口中設(shè)定,也可以在程序運(yùn)行時(shí)編寫代碼進(jìn)行修改。Label控件最重要的屬性是Text屬性,該屬性顯示用戶的文本信息。TextBox也稱為文本框控件,用于讓用戶在Web頁(yè)面中輸入文本信息,在某些情況下,也可以用來(lái)顯示文本信息。TextBox控件的重要屬性如下表所示。屬性名稱說(shuō)明Text控件顯示的文本TextMode該屬性只能取SingleLine、MultiLine和Password,對(duì)應(yīng)的顯示模式分別是單行、多行或密碼文本。ReadOnly防止用戶更改文本MaxLength文本框中所允許輸入的最大字符數(shù)AutoPostBack設(shè)置為True時(shí),當(dāng)用戶更改內(nèi)容后離開控件時(shí),導(dǎo)致控件觸發(fā)TextChangedpostback事件。默認(rèn)情況下設(shè)置為False.TextChanged事件TextBox控件所能響應(yīng)的最重要的事件。當(dāng)用戶輸入信息后離開TextBoxWeb服務(wù)器控件時(shí),控件引發(fā)程序員可以處理的此事件。VS2019提供了四種類型的控制權(quán)轉(zhuǎn)移控件,它們分別是按鈕(Button)控件、圖片按鈕(ImageButton)控件、超鏈接按鈕(LinkButton)控件和超鏈接(HyperLink)控件。Button控件是一個(gè)標(biāo)準(zhǔn)的提交按鈕,使用它可以完成把信息反饋給服務(wù)器的操作。其常用屬性和事件如下表所示。屬性或者事件名稱說(shuō)明Text屬性獲取/設(shè)置按鈕上顯示的文本Enabled屬性如果該屬性的值為False,則按鈕不可用Click事件單擊按鈕時(shí)會(huì)引發(fā)該事件,且包含該按鈕的窗體會(huì)提交給服務(wù)器及Button按鈕一樣,單擊ImageButton控件也可以將信息反饋給服務(wù)器,并驅(qū)動(dòng)某一事件過(guò)程。兩者不同的是,ImageButton控件是一個(gè)圖片按鈕,可以用它來(lái)鏈接一個(gè)圖片。其常用的屬性或事件如下表所示。屬性或者事件名稱說(shuō)明Text屬性獲取/設(shè)置按鈕上顯示的文本(VS2019無(wú)此屬性)Click事件單擊按鈕時(shí)會(huì)引發(fā)該事件,且包含該按鈕的窗體會(huì)提交給服務(wù)器ImageURL屬性指定按鈕圖像的URL(圖像需要通過(guò)解決方案資源管理器添加進(jìn)項(xiàng)目)LinkButton控件的作用及Button控件的作用完全一樣。只不過(guò)Button控件是以按鈕的形式顯示的,而LinkButton控件是以文字鏈接的形式顯示。HyperLink控件除了可以鏈接文字以外,還可以鏈接圖片。此控件沒(méi)有公開事件,它的常用屬性如下表所示。屬性名稱說(shuō)明Text鏈接的文本標(biāo)簽Target鏈接的目標(biāo)窗口或框架??赡艿闹禐開top、_self、_parent、_search或_blankNavigateURL單擊鏈接時(shí)用戶即將鏈接到的頁(yè)面的URLImageURL指定用于鏈接的圖像的URL在VS2019中,提供選擇的Web服務(wù)器控件有CheckBox(復(fù)選框控件)、CheckBoxList(復(fù)選框列表控件)、RadioButton(單選按鈕控件)、RadioButtonList(單選按鈕列表控件)、ListBox(列表框控件)、DropdownList(下拉列表框控件)。CheckBox控件和CheckBoxList控件是兩個(gè)用于實(shí)現(xiàn)復(fù)選操作的服務(wù)器控件。CheckBox控件是一個(gè)方型多選控件,多個(gè)CheckBox控件可以組合成一個(gè)CheckBoxList控件,在效果上是一致的,即CheckBoxList控件可以作為CheckBox控件的父控件。CheckBox控件和CheckBoxList控件具有相同的屬性Checked,當(dāng)該屬性取值為true時(shí),表示控件被選中。RadioButton控件是單項(xiàng)選擇按鈕控件,多個(gè)RadioButton控件組合在一起就可以形成一個(gè)RadioButtonList控件。即RadioButtonList控件可以作為RadioButton控件的父控件。RadioButton控件的常用屬性和方法如下表所示。屬性或方法說(shuō)明Text獲取或設(shè)置及CheckBox關(guān)聯(lián)的文本值TextAliagn獲取或設(shè)置及CheckBox控件關(guān)聯(lián)的文本的對(duì)齊方式GroupName獲取或設(shè)置單選按鈕所屬的組名EnableViewState控件是否保留ViewState狀態(tài)CheckedChanged當(dāng)控件的Checked屬性的值在向服務(wù)器進(jìn)行發(fā)送期間更改時(shí)發(fā)生Load當(dāng)服務(wù)器控件加載到Page對(duì)象中時(shí)發(fā)生的事件GroupName是RadioButton控件的一個(gè)重要屬性,利用它,可以使得同一Web頁(yè)面上的多個(gè)RadioButton控件具有互斥作用。在一個(gè)Web頁(yè)面中使用多個(gè)RadioButton控件,它們并不會(huì)自動(dòng)具有互斥的作用。只有網(wǎng)頁(yè)開發(fā)人員將這些RadioButton控件的GroupName屬性設(shè)為一樣,這些控件才能組成一組有關(guān)聯(lián)的單選控件,此時(shí),在組內(nèi)只能選擇一個(gè)RadioButton控件,即這些RadioButton控件具有互斥的作用。下拉列表框控件(DropDownList)是一個(gè)用下拉框形式顯示選項(xiàng)的控件,它的功能及RadioButtonList控件很類似,允許用戶從預(yù)定義下拉列表中選擇一項(xiàng)。列表框(ListBox)控件可用于設(shè)計(jì)單選或多選的列表框。該控件及DropDownList用法很相似,主要有兩點(diǎn)不同:一是其選擇項(xiàng)按設(shè)置列出,而不像DropDownList控件那樣將選項(xiàng)隱藏;二是它允許選擇多項(xiàng),而DropDownList控件只允許單選。ASP有兩種WEB服務(wù)器控件,即PlaceHolder控件和Panel控件。PlaceHolder控件是ASP控件中比較特別的一個(gè)控件,該控件可以作為其他控件的容器。使用該控件可以再程序動(dòng)態(tài)運(yùn)行時(shí),可以把子控件添加到頁(yè)面的特定位置上。Panel控件和PlaceHolder控件一樣,可以作為其他控件的容器??梢詫?duì)Panel控件中包含的所有控件進(jìn)行統(tǒng)一配置,例如同時(shí)控制多個(gè)子控件的可見性和可用性,而不需要繁瑣地設(shè)置每個(gè)子控件的Visible屬性或Enabled屬性。其他高級(jí)控件是用于特定用途的控件,只能用于特殊任務(wù)。此處只簡(jiǎn)單介紹AdRotator控件和Calendar控件。AdRotator,即廣告控件,用于顯示橫幅廣告集合中的隨機(jī)選擇內(nèi)容,該集合在基于XML的廣告文件中指定。Calendar,即日歷控件,允許開發(fā)人員提供基于日歷的界面,用于選擇日期或查看及日期相關(guān)的數(shù)據(jù)。Calendar控件基于FrameworkDateTime對(duì)象,因此支持該對(duì)象所允許的全部日期范圍,可以有效地顯示公元0~9999年之間的任意日期。下面簡(jiǎn)要介紹HTML服務(wù)器控件。HTML服務(wù)器控件是在HTML網(wǎng)頁(yè)標(biāo)記基礎(chǔ)上產(chǎn)生的。HTML網(wǎng)頁(yè)標(biāo)記只能用于客戶端編程,為了使服務(wù)器端編程能夠直接操作HTML網(wǎng)頁(yè)標(biāo)記,于是在ASP中引入了HTML服務(wù)器控件。幾乎任何HTML標(biāo)記都可以轉(zhuǎn)換為HTML服務(wù)器控件,轉(zhuǎn)換的方法是在標(biāo)記中添加Runat=“server”屬性。HTML服務(wù)器控件及HTML標(biāo)記的關(guān)系如下圖所示。如果要在代碼中作為成員引用HTML控件,還應(yīng)當(dāng)為控件分配ID屬性。例如:<FormRunat=“server”Id=“TestPage”></Body><InputRunat=“server”Id=“Btn”Type=“Submit”O(jiān)nServerClick=“OP”></Input>HTML服務(wù)器控件的基本語(yǔ)法:<HTML標(biāo)記Id=“控件名稱”Runat=“Server”>由于HTML控件是由HTML標(biāo)記所衍生出來(lái)的新功能,因此在所有的HTML控件的語(yǔ)法中,最前端是HTML標(biāo)記,不同的控件用不同的標(biāo)記;Runat=“Server”表示控件將會(huì)在服務(wù)器端執(zhí)行;Id用來(lái)設(shè)置控件的名稱,在一個(gè)程序中各控件的Id均不相同,具有唯一性。Id屬性允許以編程方式引用該控件。HTML服務(wù)器控件有幾個(gè)共同的屬性會(huì)經(jīng)常被使用,它們是:Innerhtml、InnerText、Disabled、Visible、Value、Attributes。(1)InnerHtml屬性。獲取或設(shè)置控件的開始標(biāo)記和結(jié)束標(biāo)記之間的內(nèi)容,但不自動(dòng)將特殊字符轉(zhuǎn)換為等效的HTML實(shí)體。(2)InnerText屬性。獲取或者設(shè)置控件的開始標(biāo)記和結(jié)束標(biāo)記之間的內(nèi)容,并自動(dòng)將特殊字符轉(zhuǎn)換為等效的HTML實(shí)體。(3)Value屬性。該屬性用來(lái)獲取各種輸入字段的值,包括HtmlSelect、HtmlInputText等。(4)Attributes屬性。該屬性是服務(wù)器控件標(biāo)記上表示的所有屬性名稱和值的集合。使用該屬性可以用編程方式訪問(wèn)HTML服務(wù)器控件的所有特性。使用Attributes屬性的語(yǔ)法是:控件名稱.Attributes(“屬性名”)=“屬性值”。例如,Button1.Attributes(“Value”)=“確定”,該語(yǔ)句的功能是將Button1的Value屬性設(shè)置為“確定”。(5)Disabled屬性。獲取或設(shè)置一個(gè)True或False值。True表示HTML服務(wù)器控件被禁用,F(xiàn)alse表示HTML服務(wù)器控件未被禁用。(6)Visible屬性。獲取或設(shè)置一個(gè)True或False值,該值指示服務(wù)器控件是否顯示在頁(yè)面上。True表示可見,F(xiàn)alse表示不可見。到目前為止,我們介紹了Web服務(wù)器控件、HTML服務(wù)器控件等控件,這些控件都是ASP內(nèi)置的。如果有特殊需求,可以創(chuàng)建可重復(fù)使用的自定義控件,這些控件稱作用戶控件。用戶控件是一種復(fù)合控件,它的工作原理非常類似于ASP網(wǎng)頁(yè)??梢栽谟脩艨丶刑砑覹eb服務(wù)器控件和標(biāo)記,并可以定義控件的屬性和方法。用戶控件文件的擴(kuò)展名為.ascx。用戶控件中默認(rèn)包含的代碼如下:<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="WebUserControl.ascx.cs"Inherits="WebUserControl"%>一般說(shuō)來(lái),用戶控件和ASP頁(yè)面具有如下區(qū)別:1.用戶控件的文件擴(kuò)展名為.ascx,ASP頁(yè)面的則為.aspx。2.用戶控件中包含“@Control”指令,用來(lái)定義用戶控件專有屬性;ASP頁(yè)面則包含“@Page”指令定義頁(yè)面專有屬性。3.用戶控件不能作為獨(dú)立文件運(yùn)行,而必須像處理任何其他控件一樣,將他們添加到ASP頁(yè)面中;ASP頁(yè)面可作為獨(dú)立文件運(yùn)行。4.用戶控件中不能包含html、body或form元素,ASP頁(yè)面則相反。在Web窗體中添加一個(gè)@Register指令,用于注冊(cè)用戶控件,代碼如下:<%@RegisterTagPrefix="uc"TagName="WebUserControl"Src="WebUserControl.ascx"%>在VS2019可視化環(huán)境中,只要在資源管理器中拖動(dòng)用戶控件到Web窗體,就可將用戶控件添加到Web窗體中。同時(shí),注冊(cè)用戶控件的@Register指令代碼將自動(dòng)生成。五、ASP驗(yàn)證控件ASP提供了許多驗(yàn)證控件,用以檢查輸入并使驗(yàn)證數(shù)據(jù)更加簡(jiǎn)單方便。及其他服務(wù)器控件一樣,驗(yàn)證控件也被添加在ASP頁(yè)面中。VS2019提供了六種驗(yàn)證控件,如下表所示。驗(yàn)證控件說(shuō)明RequiredFieldValidator非空驗(yàn)證控件CompareValidator比較驗(yàn)證控件RangeValidator范圍驗(yàn)證控件RegularExpressionValidator正則表達(dá)式驗(yàn)證控件CustomValidator自定義驗(yàn)證控件ValidationSummary驗(yàn)證總結(jié)控件RequiredFieldValidator控件被稱為非空驗(yàn)證控件,常用于對(duì)TextBox控件進(jìn)行非空驗(yàn)證。如果在網(wǎng)頁(yè)上使用了非空驗(yàn)證控件,當(dāng)用戶提交網(wǎng)頁(yè)到服務(wù)器時(shí),系統(tǒng)會(huì)自動(dòng)檢查被驗(yàn)證控件的輸入是否為空;如果為空,則網(wǎng)頁(yè)顯示錯(cuò)誤信息。定義RequireFieldValidator控件的代碼如下:<asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ErrorMessage="錯(cuò)誤信息!"ControlToValidate="txtUserName"></asp:RequiredFieldValidator>使用<asp:RequiredFieldValitator>表示來(lái)定義控件,ErrorMessage屬性用于指定未通過(guò)驗(yàn)證時(shí)顯示的錯(cuò)誤信息,ControlToValidate屬性用于指定待驗(yàn)證的TextBox控件。CompareValidator控件也被稱之為比較驗(yàn)證控件,它是用來(lái)驗(yàn)證兩個(gè)控件的值或者控件及某個(gè)值之間的關(guān)系。CompareValidator控件的幾個(gè)重要屬性及其說(shuō)明如下表。屬性名說(shuō)明ControlToCompare要及所驗(yàn)證的輸入控件進(jìn)行比較的輸入控件的IDOperator要執(zhí)行的比較操作Type對(duì)控件的值按照哪種方式進(jìn)行比較,默認(rèn)StringValueToCompare設(shè)置要及所驗(yàn)證的控件的值進(jìn)行比較的值因?yàn)樵谳斎肟丶锌梢暂斎胴泿?、浮點(diǎn)數(shù)、整數(shù)及字符串等,所以需要設(shè)置控件的值按照什么類型的值進(jìn)行驗(yàn)證。CompareValidator控件可以進(jìn)行驗(yàn)證的類型如下表所示。類型說(shuō)明Currency按貨幣類型比較,小數(shù)點(diǎn)后最多兩位數(shù)字Date按日期類型比較(不帶時(shí)分秒)Double按浮點(diǎn)數(shù)類型比較Integer按整數(shù)類型比較String按字符串類型比較在進(jìn)行驗(yàn)證的時(shí)候,還可以指定兩個(gè)值之間滿足什么關(guān)系才能通過(guò)驗(yàn)證,這個(gè)關(guān)系可以通過(guò)設(shè)置Operator屬性來(lái)指示,分別有<(LessThan)、<=(LessThanEqual)、!=(NotEqual)、=(Equal)、>(GreaterThan)及>=(GreaterThanEqual)。如果要將所驗(yàn)證的控件的值及某個(gè)指定的值進(jìn)行比較,那么不必設(shè)置ControlToCompare屬性的值,而應(yīng)設(shè)置ValueToCompare屬性的值。

注意:請(qǐng)不要同時(shí)設(shè)置ControlToCompare屬性和ValueToCompare屬性,如果同時(shí)指定了這兩個(gè)屬性,則ValueToCompare屬性優(yōu)先。需要進(jìn)一步指出的是,在asp中除了RequiredFieldValidator控件之外,使用CompareValidator控件、RangeValidator控件和RegularExpressionValidator控件進(jìn)行驗(yàn)證時(shí),所驗(yàn)證的控件如果沒(méi)有任何輸入也是能通過(guò)驗(yàn)證的,但是如果輸入的數(shù)據(jù)不符合驗(yàn)證規(guī)則就不能通過(guò)驗(yàn)證。要是要求用戶必須輸入并且還要符合一定規(guī)則,上述的控件就需要結(jié)合RequiredFieldValidator控件共同驗(yàn)證。RangeValidator控件也稱之為范圍驗(yàn)證控件,也就是只有當(dāng)用戶填寫的非空數(shù)據(jù)不在指定的范圍之間時(shí)就不能通過(guò)驗(yàn)證。RangeValidator控件的重要屬性如下表所示。屬性名說(shuō)明MaximumValue允許的最大值MinimumValue允許的最小值Operator要執(zhí)行的比較操作Type對(duì)控件的值按照哪種方式進(jìn)行比較,默認(rèn)String該控件能夠?qū)σ韵?種數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行驗(yàn)證:(1)String,用來(lái)驗(yàn)證字符串;(2)Integer,用來(lái)驗(yàn)證整數(shù);(3)Date,用來(lái)驗(yàn)證日期;(4)Double,用來(lái)驗(yàn)證雙進(jìn)度數(shù);(5)Currency,用來(lái)驗(yàn)證貨幣。RegularExpressionValidator控件又被稱為正則表達(dá)式驗(yàn)證控件,它的驗(yàn)證功能比其他驗(yàn)證控件更強(qiáng)大,用戶可以定義或書寫自己的驗(yàn)證表達(dá)式。定義RegularExpressionValidator控件的代碼如下:<asp:RegularExpressionValidatorID=“RegularExpressionValidator1”runat=“server”ErrorMessage=“RegularExpressionValidator”></asp:RegularExpressionValidator>RegularExpressionValidator控件的常用屬性如下表所示。屬性說(shuō)明ControlToValidate用于指定待驗(yàn)證的控件的IDErrorMessage指定未通過(guò)驗(yàn)證時(shí)顯示的錯(cuò)誤信息ValidationExpression設(shè)置或獲取指定為驗(yàn)證條件的正則表達(dá)式什么是正則表達(dá)式?正則表達(dá)式提供了功能強(qiáng)大、靈活而又高效的方法來(lái)處理文本。正則表達(dá)式的全面模式匹配表示法使您可以快速分析大量文本以找到特定的字符模式;提取、編輯、替換或刪除文本子字符串;或?qū)⑻崛〉淖址砑拥郊弦陨蓤?bào)告。對(duì)于處理字符串(例如HTML處理、日志文件分析和HTTP標(biāo)頭分析)的許多應(yīng)用程序而言,正則表達(dá)式是不可缺少的工具。正則表達(dá)式由兩種基本字符類型組成:原義(正常)文本字符、元字符以及限定符,如下圖所示。譬如,驗(yàn)證手機(jī)號(hào)碼的正則表達(dá)式為((13[0-9])|(15[89]))\d{8}此處要求手機(jī)號(hào)必須是13開頭或者是158、159開頭的并且總長(zhǎng)度是11位數(shù)字。ValidationSummary控件又稱為錯(cuò)誤總結(jié)控件,是用于顯示驗(yàn)證所有驗(yàn)證錯(cuò)誤摘要的控件,當(dāng)我們將其他驗(yàn)證控件的Display屬性設(shè)置None的時(shí)候,驗(yàn)證錯(cuò)誤信息就通過(guò)ValidationSummary控件進(jìn)行顯示。ValidationSummary控件的三個(gè)常見屬性如下表所示。屬性名說(shuō)明DisplayMode指定顯示模式,有BulletList(公告板)、List(列表)、SingleParagraph(一段文字)三種模式ShowMessageBox

是否以客戶端提示框的信息顯示驗(yàn)證錯(cuò)誤信息摘要ShowSummary

是否在網(wǎng)頁(yè)中采用內(nèi)聯(lián)方式顯示錯(cuò)誤摘要特別提醒:當(dāng)使用錯(cuò)誤總結(jié)控件時(shí),其他驗(yàn)證控件的Display屬性必須設(shè)置為None。CustomValidator控件也成為自定義驗(yàn)證控件,開發(fā)人員可以自定義該控件的驗(yàn)證函數(shù),實(shí)現(xiàn)自己個(gè)性化驗(yàn)證。CustomValidator控件及其他驗(yàn)證控件的最大區(qū)別是該控件可以添加客戶端驗(yàn)證函數(shù)和服務(wù)器端驗(yàn)證函數(shù)。CustomValidator控件的主要屬性和方法如下表所示。屬性和方法說(shuō)明ClientValidationFunction屬性指定自定義客戶端驗(yàn)證函數(shù)ControlToValidate獲取或設(shè)置待驗(yàn)證的輸入控件ErrorMessage驗(yàn)證失敗時(shí)輸出的錯(cuò)誤信息OnServerValidate方法為CustomValidator控件引發(fā)ServerValidate事件ServerValidate服務(wù)器上執(zhí)行驗(yàn)證時(shí)發(fā)生CustomValidator控件用于在客戶端或者服務(wù)器端驗(yàn)證的函數(shù)有兩個(gè)參數(shù),第一個(gè)是表示被驗(yàn)證的控件,第二個(gè)表示事件數(shù)據(jù)。第二個(gè)參數(shù)有兩個(gè)屬性:IsValid用于表示被驗(yàn)證控件是否通過(guò)驗(yàn)證,Value屬性表示被驗(yàn)證的控件的值。六、ADO及數(shù)據(jù)庫(kù)編程ADO是ADO(ActiveXDataObjects)的升級(jí)版本,它為Framework提供高效的數(shù)據(jù)訪問(wèn)機(jī)制。ADO的結(jié)構(gòu)并不復(fù)雜,它由一組數(shù)據(jù)庫(kù)訪問(wèn)類組成,主要包括Connection類(數(shù)據(jù)庫(kù)的連接)、Command類(執(zhí)行數(shù)據(jù)庫(kù)的命令)、DataReader類(數(shù)據(jù)庫(kù)的讀取器)、DataSet類(數(shù)據(jù)集)和DataAdapter類(數(shù)據(jù)庫(kù)的適配器,主要用來(lái)操作數(shù)據(jù)庫(kù)填充并操作DataSet,它是數(shù)據(jù)庫(kù)和DataSet之間的橋梁)等。System.Data命名空間提供對(duì)ADO結(jié)構(gòu)中類的訪問(wèn)。通過(guò)ADO可以生成一些組件,用于有效管理多個(gè)數(shù)據(jù)源的數(shù)據(jù)。為了在程序中訪問(wèn)SQLServer2000數(shù)據(jù)庫(kù),需要使用System.Data.SqlClient命名空間。為了在ASPWeb應(yīng)用程序中訪問(wèn)Oracle數(shù)據(jù)庫(kù),開發(fā)人員應(yīng)該在代碼中導(dǎo)入System.Data.OracleClient命名空間。ADO中的內(nèi)置對(duì)象主要包括Connection對(duì)象、Command對(duì)象、DataReader對(duì)象、DataSet對(duì)象、DataAdapter對(duì)象和DataView對(duì)象。Connection類主要處理對(duì)數(shù)據(jù)庫(kù)的連接,它是操作數(shù)據(jù)庫(kù)的基礎(chǔ)。該類表示應(yīng)用程序和數(shù)據(jù)源之間的唯一會(huì)話。在Framework中,使用IDbConnection接口定義Connection類的屬性和方法。數(shù)據(jù)庫(kù)連接字符串是IDbConnection接口的主要屬性之一,由它指定連接的數(shù)據(jù)庫(kù)名、連接數(shù)據(jù)庫(kù)時(shí)所用的用戶名和密碼等信息。定義ConnectionString的示例代碼如下:StringConnectionString="DataSource=localhost;PersistSecurityInfo=True;UserID=sa;Password=sa;InitialCatalog=HrSystem;";關(guān)于數(shù)據(jù)庫(kù)連接字符串的幾點(diǎn)說(shuō)明:1.DataSource表示數(shù)據(jù)源的機(jī)器名2.InitialCatalog表示SQLServer數(shù)據(jù)庫(kù)。3.UserId表示用戶ID,用于連接數(shù)據(jù)庫(kù)的用戶身份名稱。4.Password表示用戶密碼,用于連接數(shù)據(jù)庫(kù)的用戶登錄的密碼。Command是ADO中的重要對(duì)象,它實(shí)現(xiàn)對(duì)數(shù)據(jù)源的操作,如查詢、插入、修改和刪除等。DataReader對(duì)象通過(guò)一個(gè)打開的數(shù)據(jù)庫(kù)連接,提供一種以快速、前向和只讀的方式從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)的方法。由于DataReader每次在內(nèi)存中只處理一行數(shù)據(jù),所以使用DataReader可以提高應(yīng)用程序的性能,減少系統(tǒng)的開銷。若要?jiǎng)?chuàng)建對(duì)象DataReader,必須調(diào)用對(duì)象Command的ExecuteReader()方法,而不使用對(duì)象DataReader的構(gòu)造函數(shù)DataReader()。DataReader對(duì)象具有下面3個(gè)獨(dú)有特性:1.DataReader只能讀取數(shù)據(jù),沒(méi)有提供創(chuàng)建、修改和刪除數(shù)據(jù)庫(kù)記錄的功能。2.DataReader是一種向前的讀取數(shù)據(jù)的方式,不能回頭讀取上一條記錄。3.DataReader不能在IIS的內(nèi)容中保持?jǐn)?shù)據(jù),而是把數(shù)據(jù)直接傳遞到顯示對(duì)象。DataReader對(duì)象的主要屬性如下表所示。屬性說(shuō)明HasRowsDataReader中是否包含一行或多行記錄ItemDataReader中列的值IsClosed數(shù)據(jù)讀取器的當(dāng)前狀態(tài)FieldCount當(dāng)前行中的列數(shù)NextResult當(dāng)讀取批處理Transact-SQL語(yǔ)句的結(jié)果時(shí),使數(shù)據(jù)讀取器前進(jìn)到下一個(gè)結(jié)果IsDBNull表示某列中是否包含不存在的或缺少的值DataReader對(duì)象的主要方法如下表所示。方法說(shuō)明Read讀取DataReader中的下一條記錄Open打開DataReaderClose關(guān)閉DataReaderDataSet對(duì)象是ADO的核心,是離線訪問(wèn)技術(shù)的載體;DataAdapter對(duì)象是DataSet對(duì)象和數(shù)據(jù)存儲(chǔ)之間的橋梁。DataSet對(duì)象包含主鍵、外部鍵以及條件約束等信息,它不維持和數(shù)據(jù)源的連接,其中的數(shù)據(jù)可以被存取、操作、更新或刪除,并保持及數(shù)據(jù)源中數(shù)據(jù)一致。由于DataSet對(duì)象使用無(wú)連接傳輸模式訪問(wèn)數(shù)據(jù)源,因此在用戶要求訪問(wèn)數(shù)據(jù)源時(shí),不需要進(jìn)行連接操作。同時(shí),數(shù)據(jù)一旦從數(shù)據(jù)源讀入DataSet對(duì)象,數(shù)據(jù)源便關(guān)閉數(shù)據(jù)連接,解除數(shù)據(jù)庫(kù)的鎖定,這樣就可以避免多個(gè)用戶對(duì)數(shù)據(jù)源的爭(zhēng)奪。DataSet對(duì)象內(nèi)部是采用XML描述的,因此具有平臺(tái)無(wú)關(guān)性,即及后臺(tái)數(shù)據(jù)庫(kù)是什么類型的沒(méi)有關(guān)系。DataAdapter對(duì)象是DataSet對(duì)象和數(shù)據(jù)庫(kù)之間關(guān)聯(lián)的橋梁,可以用于檢索和更新數(shù)據(jù)。DataAdapter對(duì)象及DataSet對(duì)象配合使用來(lái)創(chuàng)建數(shù)據(jù)的內(nèi)存表示。DataAdapter對(duì)象僅僅在需要填充DataSet對(duì)象時(shí),才使用數(shù)據(jù)庫(kù)連接,完成操作之后就釋放所有的資源。DataAdapter及DataSet配合使用以提供一個(gè)分離數(shù)據(jù)的檢索機(jī)制。DataAdapter負(fù)責(zé)處理數(shù)據(jù)的數(shù)據(jù)源格式及DataSet使用的格式之間的轉(zhuǎn)換。每次從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)來(lái)填充DataSet,或者通過(guò)寫DataSet來(lái)改變數(shù)據(jù)庫(kù)時(shí),DataAdapter都提供兩種格式之間的轉(zhuǎn)換。DataAdapter對(duì)象通過(guò)Fill方法把數(shù)據(jù)添加到DataSet對(duì)象中,在對(duì)數(shù)據(jù)完成添加、刪除或修改操作后再調(diào)用Update方法更新數(shù)據(jù)源。ASP提供了一組服務(wù)器端數(shù)據(jù)訪問(wèn)控件,使用這些控件可以很方便地將數(shù)據(jù)庫(kù)中的數(shù)據(jù)顯示在網(wǎng)頁(yè)中,甚至進(jìn)行修改、刪除等操作。下面將介紹Repeater控件、DataList控件、GridView控件、DetailView控件等幾個(gè)常用的服務(wù)器端數(shù)據(jù)訪問(wèn)控件。在ASP的復(fù)雜數(shù)據(jù)綁定控件中,Repeater控件是最簡(jiǎn)單的。它可以表格的形式顯示數(shù)據(jù)源的行或列的數(shù)據(jù)。DataList控件又稱數(shù)據(jù)列表控件,它是一個(gè)非常強(qiáng)大的數(shù)據(jù)綁定控件,顯示數(shù)據(jù)的樣式非常靈活,不但可以橫排數(shù)據(jù),而且還可以豎排數(shù)據(jù)。GridView控件又稱數(shù)據(jù)網(wǎng)格控件,該控件可以呈現(xiàn)多列的、完全模板化的表格,功能上比Repeater控件和DataList控件更加強(qiáng)大。GridView控件大量使用模板,但是及Repeater和DataList控件的使用方式不同,GridView呈現(xiàn)以列組織的數(shù)據(jù)表,所以模板不是應(yīng)用到整個(gè)控件中,而是應(yīng)用在某個(gè)特定的列中。在GridView控件內(nèi)部提供分頁(yè)機(jī)制,還提供在線編輯、更新、和刪除功能。GridView控件支持?jǐn)?shù)據(jù)分頁(yè)機(jī)制,它可以將數(shù)據(jù)源的行分成多頁(yè)顯示。在實(shí)際應(yīng)用中,數(shù)據(jù)源的大小很容易超過(guò)頁(yè)面的范圍,為了保留服務(wù)器的可伸縮性以及為用戶提供更友好的頁(yè)面,最好采用分頁(yè)機(jī)制。GridView控件提供兩種分頁(yè)機(jī)制,即系統(tǒng)自帶的分頁(yè)機(jī)制及自定義分頁(yè)機(jī)制。GridView控件設(shè)置分頁(yè)后,默認(rèn)每頁(yè)顯示10條記錄。要使數(shù)據(jù)網(wǎng)格控件GridView具有自動(dòng)分頁(yè)功能,需要將AllowPaging屬性設(shè)置為true。特別需要注意的是,GridView控件雖然功能強(qiáng)大,提供了在線編輯、更新和刪除數(shù)據(jù)的功能,并且支持?jǐn)?shù)據(jù)分頁(yè)機(jī)制,但是該控件本身并不具備增加數(shù)據(jù)記錄的功能,這不能不說(shuō)是一個(gè)遺憾。除了以表格的方式顯示數(shù)據(jù)外,ASP還允許使用DetailsView控件來(lái)顯示單條數(shù)據(jù),通常用于查看記錄明細(xì)信息、添加、編輯和刪除數(shù)據(jù)。需要特別注意的是,DetailsView控件是唯一具有直接的添加數(shù)據(jù)記錄功能的數(shù)據(jù)綁定控件。DetailsView控件可以自動(dòng)生成“插入”按鈕、“編輯”按鈕、“刪除”按鈕,但是不能自動(dòng)生成“刷新”按鈕。在數(shù)據(jù)庫(kù)編程內(nèi)容中,我們應(yīng)該熟練掌握編寫數(shù)據(jù)庫(kù)訪問(wèn)的Web程序,譬如簡(jiǎn)單的登錄和注冊(cè)頁(yè)面,并要掌握數(shù)據(jù)庫(kù)的基本知識(shí),熟練運(yùn)用各種SQL語(yǔ)句。七、網(wǎng)站配置ASP提供了一個(gè)操作簡(jiǎn)易并且功能強(qiáng)大的配置系統(tǒng),通過(guò)配置系統(tǒng),我們可以輕松定制ASP應(yīng)用程序。ASP提供了兩種配置文件,即machine.config和Web.config,兩者的區(qū)別就在于設(shè)置的作用域不同。這兩種配置文件均基于XML格式,開發(fā)人員可以使用任何標(biāo)準(zhǔn)的文本編輯器或XML分析器創(chuàng)建和編輯這些配置文件。一個(gè)ASP網(wǎng)站可以擁有多個(gè)web.config配置文件。這些配置文件可以出現(xiàn)在ASPWeb應(yīng)用程序服務(wù)器上的多個(gè)目錄中。每個(gè)web.config文件都將配置信息應(yīng)用于它自己的目錄和它下面的所有子目錄。子目錄中的配置文件可以提供除從父目錄繼承的配置信息以外的配置信息,子目錄配置設(shè)置可以重寫或修改父目錄中定義的設(shè)置。一臺(tái)Web服務(wù)器中只能有一個(gè)machine.config文件,它保存了所有ASPWeb應(yīng)用程序所使用的默認(rèn)配置數(shù)據(jù);一臺(tái)Web服務(wù)器中可以有多個(gè)web.config文件,它包含每一個(gè)具體的Web應(yīng)用程序的配置信息,它可以覆蓋machine.config文件中的默認(rèn)配置,從而為Web應(yīng)用程序創(chuàng)建特定的運(yùn)行環(huán)境。web.config文件是一個(gè)XML文件,它的根結(jié)點(diǎn)是configuration,在configuration節(jié)點(diǎn)下的常見子節(jié)點(diǎn)有configSections、appSettings、<connectionStrings>和<system.web>等。當(dāng)然,網(wǎng)站配置文件Web.config對(duì)于網(wǎng)站而言,不是必須具備的。如果沒(méi)有特殊的配置需求,一個(gè)網(wǎng)站可以連一個(gè)web.config文件也沒(méi)有。在這一點(diǎn)上,Web.config文件及Global.asax文件具有共性,兩者都是可選的,對(duì)一個(gè)網(wǎng)站而言,不是必須具備的文件。兩者也是由區(qū)別的,一個(gè)Web應(yīng)用程序中最多有1個(gè)Global.asax文件有效,但是可以有若干個(gè)Web.config文件有效,即一個(gè)網(wǎng)站可以有0個(gè)或多個(gè)Web.config文件有效。八、C#基礎(chǔ)知識(shí)C#在微軟的框架中具有重要地位,是開發(fā)ASP應(yīng)用程序的主流語(yǔ)言,我們主要掌握下面幾個(gè)內(nèi)容:(1)C#的變量、常量、控制語(yǔ)句(2)C#類的基礎(chǔ)知識(shí)及使用方法(3)C#的異常處理當(dāng)然,對(duì)于對(duì)于實(shí)際應(yīng)用上,如何在VS2019集成開發(fā)環(huán)境中編寫和調(diào)試基于控制臺(tái)的C#程序,如何在ASPWeb應(yīng)用程序中靈活運(yùn)用C#程序是我們必須熟練掌握的基本功和實(shí)踐開發(fā)技能。下面介紹的C#知識(shí),不是完整的,我們需要查閱教材和授課課件中及C#相關(guān)的章節(jié),才能獲得對(duì)C#基礎(chǔ)知識(shí)較為完備的認(rèn)識(shí)。C#語(yǔ)言中的運(yùn)算符,包括一元運(yùn)算符、二元運(yùn)算符和三元運(yùn)算符。將其按從高到低的優(yōu)先級(jí)順序列出,如下表所示。類別運(yùn)算符算術(shù)運(yùn)算符+-*/%邏輯運(yùn)算符&|^~&&||!字符串連接運(yùn)算符+增量和減量運(yùn)算符++--移位運(yùn)算符>><<比較運(yùn)算符==!=<><=>=賦值運(yùn)算符=+=-=*=/=%=&=|=^=<<=>>=.成員訪問(wèn)運(yùn)算符(對(duì)象和結(jié)構(gòu)).索引運(yùn)算符(數(shù)組和索引器)[]數(shù)據(jù)類型轉(zhuǎn)換運(yùn)算符()條件運(yùn)算符(三元運(yùn)算符)?:委托連接和刪除運(yùn)算符+-對(duì)象創(chuàng)建運(yùn)算符new類型信息運(yùn)算符sizeofistypeofas在C#語(yǔ)言中,加號(hào)(+)既可以作為算術(shù)運(yùn)算符的加號(hào),也可以作為字符串連接運(yùn)算符,用于連接兩個(gè)字符串。在C#語(yǔ)言中,+(加號(hào))既可以作為一元運(yùn)算符表示正數(shù),也可以作為二元運(yùn)算符,用來(lái)計(jì)算兩個(gè)操作數(shù)的和。在C#語(yǔ)言中,“=”是一個(gè)賦值運(yùn)算符,“==”才是用于比較的關(guān)系運(yùn)算符,這個(gè)不能弄混。Framework的類庫(kù)中提供了大量的類,這些類都是層次結(jié)構(gòu)分類管理的。命名空間是類的邏輯分組,它組成一個(gè)邏輯樹,樹根為System。在C#語(yǔ)言中,Console類用于管理控制臺(tái)應(yīng)用程序的標(biāo)準(zhǔn)輸入流、輸出流和錯(cuò)誤流。及C語(yǔ)言一樣,在C#語(yǔ)言中,數(shù)組下標(biāo)也是從0開始的,即排在數(shù)組最前面的第一個(gè)元素的下標(biāo)是0。在C#語(yǔ)言中,所有的數(shù)組都是由System命名空間的Array類繼承而來(lái),且可以在任何數(shù)組上訪問(wèn)該類的方法和屬性。在Array類中,可以對(duì)一維數(shù)組中的元素進(jìn)行排序的方法是Sort()。在C#語(yǔ)言中,enum關(guān)鍵字用于定義枚舉類型,枚舉類型就是能夠枚舉出所有取值的類型。在C#語(yǔ)言中,struct關(guān)鍵字用于定義結(jié)構(gòu)類型。常量具有固定的值,在程序中常量的值不能發(fā)生改變。在C#語(yǔ)言中,可以使用關(guān)鍵字const來(lái)聲明常量。在C#語(yǔ)言中,靜態(tài)變量使用static關(guān)鍵字聲明。在c#中using關(guān)鍵字的作用是引入命名空間。在C#中定義接口時(shí),使用的關(guān)鍵字是interface。在C#語(yǔ)言中,顯式類型轉(zhuǎn)化也稱為強(qiáng)制類型轉(zhuǎn)換,它需要在進(jìn)行類型轉(zhuǎn)換時(shí)明確指定要轉(zhuǎn)換的目標(biāo)類型。當(dāng)整數(shù)a賦值給一個(gè)object對(duì)象時(shí),整數(shù)a將會(huì)被裝箱。在C#語(yǔ)言中,將變量從字符串類型轉(zhuǎn)換為數(shù)值類型可以使用的類型轉(zhuǎn)換方法是int

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論