Visual-Basic-NET程序設(shè)計(jì)第11章_第1頁(yè)
Visual-Basic-NET程序設(shè)計(jì)第11章_第2頁(yè)
Visual-Basic-NET程序設(shè)計(jì)第11章_第3頁(yè)
Visual-Basic-NET程序設(shè)計(jì)第11章_第4頁(yè)
Visual-Basic-NET程序設(shè)計(jì)第11章_第5頁(yè)
已閱讀5頁(yè),還剩47頁(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)介

第11章ASP.NET

初步本章學(xué)習(xí)目標(biāo)

本章通過(guò)制作一個(gè)在線考試系統(tǒng),使讀者掌握使用VisualBasic.NET創(chuàng)立Web程序的方法和根本知識(shí)。主要學(xué)習(xí)要點(diǎn)包括:HTML語(yǔ)法;了解Internet網(wǎng)絡(luò)的構(gòu)架會(huì)簡(jiǎn)單地配置IIS;web窗體控件、Page對(duì)象成員〔Response、Request〕的使用。第11章ASP.NET初步11.1Web編程根底11.2Web效勞器與MicrosoftIIS11.3ASP.NET的工作原理11.4效勞器端控件11.5數(shù)據(jù)驗(yàn)證控件11.6內(nèi)部對(duì)象11.1Web編程根底通過(guò)互聯(lián)網(wǎng)訪問(wèn)的大局部信息都是存儲(chǔ)在稱為“效勞器”的計(jì)算機(jī)上。效勞器上存儲(chǔ)著可供客戶機(jī)使用的數(shù)據(jù),并對(duì)客戶機(jī)的請(qǐng)求做出響應(yīng)〔效勞〕?!翱蛻魴C(jī)”是一臺(tái)計(jì)算機(jī),更確切地說(shuō),是一個(gè)特殊的計(jì)算機(jī)程序,它知道如何與某種類型的效勞器通信,以便使用效勞器上存儲(chǔ)的信息(或者把信息存入效勞器)。而互聯(lián)網(wǎng)只是連接這些計(jì)算機(jī)的信息通道。這種工作模式稱為“客戶/效勞器”模式,如所示。每一個(gè)客戶機(jī)程序可以訪問(wèn)因特網(wǎng)上一種不同類型的效勞器。目前Internet最主要的效勞有:萬(wàn)維網(wǎng)WWW〔WordWideWeb〕、電子郵件〔E-mail〕、遠(yuǎn)程登錄〔Telnet〕、文件傳輸〔FTP〕、電子公告牌〔BBS〕等。萬(wàn)維網(wǎng)WWW是一種交互式信息查詢工具。WWW系統(tǒng)按“客戶/效勞器”模式運(yùn)行。用戶通過(guò)Web瀏覽器的客戶機(jī)程序〔如IE〕與存儲(chǔ)Web頁(yè)的計(jì)算機(jī)(Web效勞器)通信。IE瀏覽器向效勞器發(fā)出請(qǐng)求,效勞器把請(qǐng)求的內(nèi)容發(fā)送回用戶計(jì)算機(jī),并在瀏覽器上顯示,在瀏覽器上所看到的內(nèi)容就稱為“網(wǎng)頁(yè)”。網(wǎng)頁(yè)是效勞器返回給客戶的信息的載體,它是WWW為用戶提供的一個(gè)輕松的圖形化用戶界面,WWW正是以這些網(wǎng)頁(yè)為根底構(gòu)成一個(gè)龐大的信息網(wǎng)。11.1.1網(wǎng)頁(yè)瀏覽根本原理圖11-1圖11-1客戶/服務(wù)器模式11.1.2網(wǎng)頁(yè)地址要瀏覽一個(gè)網(wǎng)頁(yè),首先要在瀏覽器的地址欄中輸入該網(wǎng)頁(yè)的Web地址。Web站點(diǎn)的地址是由幾個(gè)不同的局部組成的。每一局部與它后面的局部用一個(gè)斜杠〔/〕分隔。地址的第一局部,即第一個(gè)斜杠前的所有內(nèi)容,是Web效勞器的因特網(wǎng)地址。第一個(gè)斜杠之后的所有內(nèi)容是目錄路徑和/或效勞器上指定網(wǎng)頁(yè)的文件名。有時(shí),一個(gè)地址只是一個(gè)效勞器的地址,而沒(méi)有Web頁(yè)文件名。這時(shí)效勞器將自動(dòng)顯示一個(gè)Web頁(yè),這些網(wǎng)頁(yè)被稱為主頁(yè),而且常常以”index.htm”作為其文件名。主頁(yè)起著對(duì)網(wǎng)站站點(diǎn)的文件“索引”和“導(dǎo)航”作用。通過(guò)主頁(yè),瀏覽者可以了解該站點(diǎn)的內(nèi)容,并通過(guò)超級(jí)鏈接訪問(wèn)到所需的網(wǎng)頁(yè)。效勞器中可以有多個(gè)站點(diǎn),站點(diǎn)就是一系列主題相關(guān)網(wǎng)頁(yè)的集合。11.1.3HTML文件格式1〕HTML語(yǔ)法HTML是由標(biāo)志和屬性構(gòu)成的,一起用于標(biāo)識(shí)各個(gè)文檔部件,告訴瀏覽器如何顯示文檔。標(biāo)志通過(guò)指定某塊信息為段落或標(biāo)題等來(lái)標(biāo)識(shí)文檔部件。以下以一個(gè)例子來(lái)說(shuō)明HTML語(yǔ)法:例11-1:創(chuàng)立一個(gè)web文件,并用瀏覽器翻開(kāi)。步驟一:翻開(kāi)Windows附件下的“記事本”,輸入如下代碼后,將文件保存為index.htm。<html><head><meta-equiv="Content-Type"content="text/html;charset=gb2312"><title>學(xué)習(xí)VisualBasic.NET</title></head><body><H2align=center>Web編程根底</H2><p>讓我們一起學(xué)習(xí)網(wǎng)頁(yè)設(shè)計(jì)</p><p>我喜愛(ài)網(wǎng)頁(yè)設(shè)計(jì)<br>網(wǎng)頁(yè)設(shè)計(jì)簡(jiǎn)單有趣</p></body></html>步驟二:使用InternetExplorer瀏覽器翻開(kāi)該文件,運(yùn)行結(jié)果如圖11-2所示。從以上HTML代碼及運(yùn)行結(jié)果可以看出,HTML語(yǔ)言主要通過(guò)各種標(biāo)記來(lái)標(biāo)識(shí)和排列網(wǎng)頁(yè)元素〔也可稱為對(duì)象〕,絕大多數(shù)標(biāo)記是成對(duì)出現(xiàn)的,其格式如下:格式1:<標(biāo)記>對(duì)象</標(biāo)記>HTML的根本標(biāo)記主要有以下幾個(gè):〔1〕html:標(biāo)識(shí)HTML文件的開(kāi)始和結(jié)束。圖11-2HTML文件結(jié)構(gòu)運(yùn)行結(jié)果〔2〕head:標(biāo)識(shí)HTML文件頭信息,包含了許多網(wǎng)頁(yè)的屬性信息,如網(wǎng)頁(yè)標(biāo)題、關(guān)鍵詞、網(wǎng)頁(yè)內(nèi)碼等。其中title標(biāo)記標(biāo)識(shí)的是當(dāng)前網(wǎng)頁(yè)的標(biāo)題。〔3〕body:文件體標(biāo)記,<body>和</body>之間包含文檔中所有文本、圖像等網(wǎng)頁(yè)元素的內(nèi)容?!?〕p:段落標(biāo)記,<p>和</p>之間是一個(gè)段落的內(nèi)容。在其間可以添加相關(guān)的段落屬性?!?〕font:字體標(biāo)記,用來(lái)設(shè)置文字的字體格式?!?〕img:圖像標(biāo)記,設(shè)置網(wǎng)頁(yè)中圖像的來(lái)源、尺寸、對(duì)齊方式等屬性?!?〕a:超級(jí)鏈接標(biāo)記,設(shè)置超級(jí)鏈接目標(biāo)和名字等?!?〕br:換行標(biāo)記。標(biāo)記中還可以帶屬性格式2:<標(biāo)記屬性=屬性值>對(duì)象</標(biāo)記>HTML中也有少數(shù)標(biāo)記可以不成對(duì)出現(xiàn),如<br>,表示換行。當(dāng)需要換行時(shí),在要換行的地方添加標(biāo)記<br>即可。格式3:<標(biāo)記>所有HTML代碼都由以上三種標(biāo)記組合而成,標(biāo)記間還可以互相嵌套,形成更為復(fù)雜的語(yǔ)法,嵌套標(biāo)記時(shí)要注意標(biāo)記的嵌套順序,不能交叉嵌套。2〕HTML文件根本結(jié)構(gòu)不同網(wǎng)頁(yè)的文件內(nèi)容是不同的,但其HTML代碼結(jié)構(gòu)是相同的。一個(gè)完整的HTML文件結(jié)構(gòu)如下:

<html> <head>

文件頭信息

</head> <body>

文件體

</body></html>11.1.4靜態(tài)網(wǎng)頁(yè)和動(dòng)態(tài)網(wǎng)頁(yè)網(wǎng)頁(yè)分兩種模式,一種是靜態(tài)網(wǎng)頁(yè),另外一種那么是動(dòng)態(tài)網(wǎng)頁(yè)。靜態(tài)網(wǎng)頁(yè)適合于那些內(nèi)容不需要經(jīng)常變化的網(wǎng)頁(yè),例如:某個(gè)用于介紹公司地址或公司商標(biāo)的網(wǎng)頁(yè),這類信息不用經(jīng)常變化,只是簡(jiǎn)單的介紹,因此,使用靜態(tài)網(wǎng)頁(yè)就夠了。所謂動(dòng)態(tài)網(wǎng)頁(yè),是指由程序?qū)崟r(shí)生成,可以根據(jù)不同條件生成不同內(nèi)容的網(wǎng)頁(yè)。動(dòng)態(tài)網(wǎng)頁(yè)通常是和后臺(tái)數(shù)據(jù)庫(kù)連接在一起的,網(wǎng)頁(yè)內(nèi)容的修改只需要在后臺(tái)操作就可以了,無(wú)須改動(dòng)頁(yè)面。動(dòng)態(tài)網(wǎng)頁(yè)除了能表達(dá)靜態(tài)網(wǎng)頁(yè)的功能外,還提供了交互的功能,它能對(duì)用戶提交的信息作出實(shí)時(shí)處理,并將處理的信息立即反響給用戶。動(dòng)態(tài)網(wǎng)頁(yè)常見(jiàn)的功能有搜索引擎、論壇、聊天室、表單的提交、電子商務(wù)等。11.2Web效勞器與MicrosoftIIS11.2.1

IIS的安裝默認(rèn)情況下,不會(huì)在WindowsXPProfessional和Windows2000上安裝Internet信息效勞??梢酝ㄟ^(guò)“控制面板”中的“添加或刪除程序”窗口中安裝或刪除IIS組件。以下是安裝步驟:〔1〕單擊桌面上的“開(kāi)始”按鈕,在“開(kāi)始”菜單中選擇“控制面板”。在“控制面板”窗口中雙擊“添加或刪除程序”啟動(dòng)“添加或刪除程序”應(yīng)用程序。翻開(kāi)“控制面板→管理工具→Internet信息效勞”〔注意應(yīng)切換到經(jīng)典視圖〕,出現(xiàn)IIS的管理界面。如所示。在IIS的管理窗口中用鼠標(biāo)右鍵單擊“默認(rèn)網(wǎng)站”,在彈出的快捷菜單中單擊“屬性”選項(xiàng)。在彈出的屬性窗口中,對(duì)“默認(rèn)網(wǎng)站的主目錄,默認(rèn)文檔和TCP端口等進(jìn)行設(shè)置,然后在IE瀏覽器里輸入這臺(tái)電腦的IP地址,就可以瀏覽網(wǎng)頁(yè)了。如所示。主目錄是指的是網(wǎng)頁(yè)保存在電腦里的位置,默認(rèn)是c:\inetpub\wwwroot目錄。默認(rèn)文檔是網(wǎng)站主頁(yè)的名稱,常用的有index.htm,default.htm,index.asp,default.asp等,設(shè)置了默認(rèn)文

配置IIS1〕默認(rèn)網(wǎng)站〔2〕在“添加或刪除程序”對(duì)話框左側(cè)的列中,單擊“添加/刪除Windows組件”。〔3〕在“Windows組件”列表中選中“Internet信息效勞”,然后根據(jù)系統(tǒng)指導(dǎo)進(jìn)行安裝操作。圖11-3圖11-4檔,不用輸入文件名就可以訪問(wèn)網(wǎng)站,如果沒(méi)有設(shè)置的話,那就必須填入完整路徑才能翻開(kāi)網(wǎng)站的首頁(yè)。把例11-1的index.htm文件拷入c:\inetpub\wwwroot目錄下,在IE瀏覽器輸入網(wǎng)站地址:://localhost/,就可以瀏覽該頁(yè)面。TCP端口是各種網(wǎng)絡(luò)協(xié)議使用的,如使用80端口,ftp使用21端口等。端口是可以自己重新定向的,如有些情況下,使用8080端口等。使用默認(rèn)的端口號(hào)時(shí),不用在網(wǎng)址填入端口號(hào),更改正端口號(hào)的,那么要在網(wǎng)址中填入相應(yīng)的端口號(hào)才能訪問(wèn)網(wǎng)站。圖11-3IIS的管理窗口2〕虛擬目錄如果網(wǎng)站包含的某些文件不在主目錄中,那么必須創(chuàng)立虛擬目錄,將這些文件包含到網(wǎng)站中。在“默認(rèn)網(wǎng)站”中單擊右鍵,選擇“新建”→“虛擬目錄”。并入相應(yīng)的名稱、路徑及相應(yīng)的讀取權(quán)限等,這樣一個(gè)虛擬目錄就建立好了。虛擬目錄與默認(rèn)網(wǎng)站一樣,也有默認(rèn)文檔的設(shè)置。當(dāng)這些設(shè)置完成后,就可以在瀏覽器中來(lái)訪問(wèn)它了。圖11-4“默認(rèn)”網(wǎng)站屬性設(shè)置11.3

ASP.NET的工作原理11.3.1ASP.NET簡(jiǎn)介ASP是ActiveServerPages〔效勞器端動(dòng)態(tài)網(wǎng)頁(yè)〕的縮寫。相對(duì)HTML靜態(tài)網(wǎng)頁(yè)文件,ASP文件可以與用戶進(jìn)行互動(dòng),實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)的功能。ASP.NET不是ASP的簡(jiǎn)單升級(jí),從外觀上看,ASP.NET和ASP是相近的,但是從本質(zhì)上是完全不同的。ASP.NET幾乎全是基于組件和模塊化,每一個(gè)頁(yè),對(duì)象,和HTML元素都是一個(gè)運(yùn)行的組件對(duì)象。在開(kāi)發(fā)語(yǔ)言上,ASP.NET拋棄了VBSCRIPT和JSCRIPT,而使用.NETFramework所支持的VB.NET,C#.NET等語(yǔ)言作為其開(kāi)發(fā)語(yǔ)言,這些語(yǔ)言生成的網(wǎng)頁(yè)在后臺(tái)被轉(zhuǎn)換成了類,并編譯成了一個(gè)DLL。由于ASP.NET是編譯執(zhí)行的,所以它比ASP擁有了更高的效率。ASP.NETWeb窗體頁(yè)是擴(kuò)展名為.aspx的文本文件。Web應(yīng)用程序和一般的Windows應(yīng)用程序之間的最大的差異在于:Web應(yīng)用程序?qū)⒋缶植看a保存在Web效勞器上,而不是用戶的計(jì)算機(jī)上。Web效勞器負(fù)責(zé)執(zhí)行該程序,并負(fù)責(zé)把結(jié)果返回給瀏覽器。這種處理方式的好處是:代碼保存在同一地方,便于更新;終端用戶不需要安裝Web應(yīng)用程序。11.3.2新建ASP.NET應(yīng)用程序例11-1:設(shè)計(jì)登錄web頁(yè)。該web頁(yè)包含2個(gè)文本框用于輸入用戶名和密碼;2個(gè)標(biāo)簽控件以及1個(gè)提交按鈕。當(dāng)用戶輸入密碼后,程序?qū)臄?shù)據(jù)庫(kù)中是否有該用戶,以及該用戶的密碼是否正確。當(dāng)用戶輸入正確的用戶名和密碼后,將進(jìn)入下一個(gè)頁(yè)面;否那么在登錄頁(yè)面上顯示“錯(cuò)誤的用戶名和密碼”提示文本。設(shè)計(jì)步驟如下: 1〕新建Access數(shù)據(jù)庫(kù)用Access新建一個(gè)名為“根本信息.mdb”的數(shù)據(jù)庫(kù)文件。表“用戶信息”共有“用戶名”和“密碼”2個(gè)字段。2〕新建解決方案〔1〕啟動(dòng)VisualStudio.NET,新建名為“Mysolution”的空白解決方案?!?〕選擇“文件/新建/工程”菜單命令,將翻開(kāi)“新建工程”對(duì)話框?!?〕在“工程類型”列表中選擇“VisualBASCI工程”,在“模板”列表中選擇“ASP.NETWeb應(yīng)用程序”,在“位置”文本框中輸入完整的URL,單擊“確定”按鈕,將在指定的效勞器根目錄下創(chuàng)立新的Web應(yīng)用程序。 4〕系統(tǒng)自動(dòng)提供一個(gè)頁(yè)面,文件名為“WebForm1.aspx”。在“工具箱”的“Web窗體”選項(xiàng)卡中,分別選擇1個(gè)“Button”控件、2個(gè)TextBox控件和2個(gè)標(biāo)簽控件,并將其繪制到Web窗體中。如圖11-5所示。對(duì)控件屬性做如下設(shè)置:〔5〕雙擊Button控件,為其添加事件處理程序。系統(tǒng)自動(dòng)生成代碼文件“WebForm1.aspx.vb”。有關(guān)程序代碼將保存在該文件中。翻開(kāi)代碼文件,系統(tǒng)自動(dòng)提供以下代碼:圖11-5web窗體ImportsPublicClassWebForm1

Inherits

PrivateSubButSubmit_Click(ByVal

-senderAsSystem.Object,ByValeAs-System.EventArgs)HandlesButSubmit.Click

EndSubEndClass

控件類型控件ID屬性類型屬性值說(shuō)明標(biāo)簽控件Label1Text用戶名對(duì)文本框注釋標(biāo)簽控件Label2Text密碼對(duì)文本框注釋文本框TxtName輸入用戶名文本框TxtCodeTextModePassword輸入密碼,并且密碼在文本框中以圓點(diǎn)形式顯示按鈕控件ButSubmitText提交按下按鈕后將檢驗(yàn)用戶名和密碼。在通過(guò)檢驗(yàn)的情況下彈出新頁(yè)面表11-1例11-1web窗體控件設(shè)置在事件處理程序中添加下面的代碼:PrivateSubButSubmit_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesButSubmit.Click'在此處放置初始化頁(yè)的用戶代碼

DimconnAsNewOleDbConnection

'定義Connection對(duì)象

DimconStrAsString'定義連接字符串

conStr="DataSource=""C:\Inetpub\wwwroot\_ 根本信息.mdb"";Provider=""Microsoft.Jet.OLEDB.4.0"";"conn.ConnectionString=conStrconn.Open()'翻開(kāi)數(shù)據(jù)庫(kù)'創(chuàng)立Command對(duì)象DimcomobjAsNewOleDbCommand("select*from用戶信息where用戶名="""+TxtName.Text+"""",conn)DimdaAsNewOleDbDataAdapterda.SelectCommand=comobjDimdsAsNewDataSetda.Fill(ds,"用戶信息")Ifds.Tables("用戶信息").Rows.Count<=0Then'判斷是否存在滿足條件的記錄Response.Write("用戶名或密碼錯(cuò)誤")ElseResponse.Redirect("WebForm2.aspx")'翻開(kāi)下一網(wǎng)頁(yè)EndIfconn.Close()EndSub〔6〕在“生成”菜單上,生成該應(yīng)用程序?!?〕在“文件”菜單中選擇“在瀏覽器中查看”命令,就可以調(diào)試程序。也可以在IE瀏覽器的地址欄中輸入“://localhost”進(jìn)行訪問(wèn)。本程序在瀏覽器中查看的結(jié)果如圖11-6所示。在圖11-6中,輸入的用戶名和密碼不對(duì),所以程序中的response對(duì)象的write方法在頁(yè)面的上輸出“用戶名或密碼錯(cuò)誤”。3〕新建安裝〔部署〕工程〔1〕在“解決方案資源管理器”窗格中,右擊“解決方案”,于快捷菜單中選擇“添加”→“新建工程”,翻開(kāi)“新建工程”對(duì)話框。在“工程類型”列表中選擇“安裝和部署工程”工程,在“模板”列表中,選擇“Web安裝工程”,在“名稱”框中鍵入“WebDeploy”。單擊“確定”按鈕?!?〕在“WebDeploy”工程的“屬性”窗口中,選擇“ProductName”屬性,并鍵入“MyWeb”。4〕將“MyWeb”工程的輸出添加到部署工程中〔1〕在文件系統(tǒng)編輯器中,選擇“Web應(yīng)用程序”文件夾。選擇“操作”菜單中的“添加”命令,然后選擇“工程輸出”?!?〕在“添加工程輸出組”對(duì)話框中,選擇“工程”下拉列表中的“MyWeb”。〔3〕選擇“主輸出”和“內(nèi)容文件”組,然后單擊“確定”。5〕設(shè)置安裝程序的屬性〔1〕選擇“Web應(yīng)用程序文件夾”。在“屬性”窗口中,VirtualDirectory屬性設(shè)置為“MyWeb”?!?〕在“生成”菜單上選擇“生成“WebDeploy”。6〕將應(yīng)用程序部署到另一臺(tái)計(jì)算機(jī)的Web效勞器上〔1〕查找所生成的文件“WebDeploy.msi”,將該文件以及所在目錄中的其他所有文件和子目錄復(fù)制到目的計(jì)算機(jī)上?!?〕在目的計(jì)算機(jī)上,運(yùn)行安裝程序“Setup.exe”。安裝程序運(yùn)行完成后,目的計(jì)算機(jī)的WWW站點(diǎn)的主目錄下將生成新的虛擬目錄“MyWeb”。至此,就可以正常訪問(wèn)文件“MyFirstForm.aspx”了。順便指出,安裝在計(jì)算機(jī)上的Web應(yīng)用程序的卸載方法與普通應(yīng)用程序的卸載方法完全相同。11.3.3ASP.NET網(wǎng)頁(yè)代碼模型ASP.NET網(wǎng)頁(yè)由兩局部組成:〔1〕可視元素,包括標(biāo)記、效勞器控件和靜態(tài)文本。主要由HTNML語(yǔ)言描述?!?〕代碼模塊,包括事件處理程序和其他代碼。ASP.NET提供兩個(gè)用于管理可視元素和代碼的模型,即單文件頁(yè)模型和代碼隱藏頁(yè)模型。這兩個(gè)模型功能相同,兩種模型中可以使用相同的控件和代碼。1〕單文件頁(yè)模型

在單文件頁(yè)模型中,頁(yè)的標(biāo)記及其編程代碼位于同一個(gè).aspx文件中。編程代碼位于<script>與</script>或<%>與</%>標(biāo)記的塊中,該塊包含runat=“server”屬性,此屬性將其標(biāo)記為ASP.NET應(yīng)執(zhí)行的代碼。例11-2:?jiǎn)挝募?yè)模型web窗體程序。%@PageLanguage="VB"%><HTML><HEADid="Head1"> <title>Single-FilePageModel</title> <scriptrunat="server">

ProtectedSubButton1_Click(ByValsenderAsObject,_ ByValeAsSystem.EventArgs) Label1.Text="Clickedat"&DateTime.Now.ToString()

EndSub

</script></HEAD><body>

<formid="form1"runat="server">

<div><asp:labelid="Label1"runat="server"Text="Label"></asp:label><asp:buttonid="Button1"onclick="Button1_Click"runat="server"Text="Button"></asp:button></div></form></body></HTML>2〕代碼隱藏頁(yè)模型通過(guò)代碼隱藏頁(yè)模型,可以在一個(gè)文件〔.aspx文件〕中保存標(biāo)記,并在另一個(gè)文件中保存編程代碼,如例子11-1,在WebForm1窗體設(shè)計(jì)器的底部有兩個(gè)選項(xiàng)卡:設(shè)計(jì)和HTML。設(shè)計(jì)視圖提供一個(gè)可視化的編程視圖,可以在其中拖動(dòng)控件并使用屬性窗口對(duì)它們進(jìn)行配置。而HTML視圖以HTML文件的代碼格式顯示。以下是例11-1web窗體的HTML代碼。<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="webform1.aspx.vb"Inherits="WebApplication3.WebForm1"debug="True"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD><title>WebForm1</title> <metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.1"> <metaname="CODE_LANGUAGE"content="VisualBasic.NET7.1"> <metaname="vs_defaultClientScript"content="JavaScript"> <metaname="vs_targetSchema"content="://schemas.microsoft/intellisense/ie5"></HEAD><bodyMS_POSITIONING="GridLayout"aLink="#ff0066"> <formid="Form1"method="post"runat="server"> <FONTface="宋體"> <asp:TextBoxid="TxtName"style="Z-INDEX:101;LEFT:152px;POSITION:absolute;TOP:48px"runat="server"

Width="160px"></asp:TextBox> <asp:TextBoxid="TxtCode"style="Z-INDEX:102;LEFT:152px;POSITION:absolute;TOP:112px"runat="server" Width="168px"Height="32px"TextMode="Password"></asp:TextBox>

<asp:Buttonid="ButSubmit"style="Z-INDEX:103;LEFT:168px;POSITION:absolute;TOP:176px" runat="server"Width="144px"Height="32px"Text="提交"></asp:Button> <asp:Labelid="Label1"style="Z-INDEX:104;LEFT:56px;POSITION:absolute;TOP:48px"runat="server" Width="72px"Height="32px">用戶名</asp:Label> <asp:Labelid="Label2"style="Z-INDEX:105;LEFT:64px;POSITION:absolute;TOP:112px"runat="server" Width="56px"Height="32px">密碼</asp:Label></FONT> </form></body></HTML>使用代碼隱藏頁(yè)模型的最大好處就是頁(yè)面設(shè)計(jì)與代碼設(shè)計(jì)是分開(kāi)的,這樣頁(yè)面設(shè)計(jì)就可以交給美工人員進(jìn)行,而實(shí)現(xiàn)頁(yè)面交互局部的代碼設(shè)計(jì)就由程序員來(lái)完成,各司其職共同完成網(wǎng)站建設(shè)。在單文件模型和代碼隱藏模型之間,.aspx頁(yè)有兩處差異。在代碼隱藏模型中,不存在具有runat=“server”屬性的script塊。第二個(gè)差異是,代碼隱藏模型中的@Page指令包含引用外部文件〔SamplePage.aspx.vb或SamplePage.aspx.cs〕和類的屬性。這些屬性將.aspx頁(yè)鏈接至其代碼。頁(yè)運(yùn)行時(shí),編譯器將讀取.aspx頁(yè)以及它在@Page指令中引用的文件,將它們匯編成單個(gè)類,然后將它們作為一個(gè)單元編譯為單個(gè)類。單文件頁(yè)模型和代碼隱藏頁(yè)模型功能相同。在運(yùn)行時(shí),這兩個(gè)模型以相同的方式執(zhí)行,而且它們之間沒(méi)有性能差異。因此,頁(yè)模型的選擇取決于其他因素,例如,要在應(yīng)用程序中組織代碼的方式、將頁(yè)面設(shè)計(jì)與代碼編寫分開(kāi)是否重要等等。@Page出現(xiàn)在.aspx文件的首行,是一個(gè)指令,language,Codebehind,AutoEventWireup,Inherits分別是這個(gè)指令的屬性;Language屬性指定在對(duì)頁(yè)中的所有代碼聲明塊進(jìn)行編譯時(shí)使用的語(yǔ)言。值可以表示任何.NETFramework支持的語(yǔ)言,包括VisualBasic、C#或JScript。每頁(yè)只能使用和指定一種語(yǔ)言。language=“vb”,表示該頁(yè)面所使用的語(yǔ)言是VisualBasic;LanguageCodeBehind屬性指定包含與頁(yè)關(guān)聯(lián)的類的已編譯文件的名稱。該屬性不能在運(yùn)行時(shí)使用。提供此屬性是為了與以前版本的ASP.NET的兼容,以實(shí)現(xiàn)代碼隱藏功能。在ASP.NET2.0版中,應(yīng)改用CodeFile屬性指定該源文件的名稱,同時(shí)使用Inherits屬性指定該類的完全限定名稱。例11-1中Codebehind=“webform1.aspx.vb”表示該頁(yè)的后置代碼在當(dāng)前目錄下的webform1.aspx.vb文件中;AutoEventWireup屬性表示是否自動(dòng)地將頁(yè)面的事件和相應(yīng)的方法綁定到一起,一般設(shè)為false,因?yàn)榧僭O(shè)設(shè)為true有可能兩次調(diào)用相同的事件代碼。Inherits屬性定義供頁(yè)繼承的代碼隱藏類。例11-1中Inherits="WebApplication3.WebForm1"Debug屬性指示是否應(yīng)使用調(diào)試符號(hào)編譯該頁(yè)。如果應(yīng)使用調(diào)試符號(hào)編譯該頁(yè),那么為true;否那么為false。由于該設(shè)置將影響性能,因此只應(yīng)在開(kāi)發(fā)期間將此屬性設(shè)置為true。11.3.4web窗體運(yùn)行機(jī)制當(dāng)包含web窗體的頁(yè)面〔如例11-1WebForm1.aspx〕的被請(qǐng)求時(shí),效勞器的ASP.NET模塊分析.aspx文件的內(nèi)容,根據(jù)文件中的@Page命令,尋找到它的隱藏代碼文件〔WebForm1.aspx.vb〕一起進(jìn)行編譯,并生成一個(gè)Page派生類〔WebForm1〕對(duì)象。Page類對(duì)象的生命周期包括初始化、生成HTML代碼和釋放對(duì)象三個(gè)階段。該對(duì)象要完成的任務(wù)之一就是生成HTML流,這些HTML流可以返回到IIS,再?gòu)腎IS返回到客戶。在生成HTML流后,對(duì)象將被撤銷。客戶在接收到HTML流后,可能會(huì)觸發(fā)頁(yè)面中的控件事件,例如按下頁(yè)面中的“提交”按鈕。事件作為一個(gè)消息,通過(guò)HTTP的請(qǐng)求,向效勞器報(bào)告事件的參數(shù)以及頁(yè)面的狀態(tài)〔例如,“用戶名”文本框和“密碼”文本框中的內(nèi)容〕。效勞器重將重新生成WebForm1對(duì)象,并根據(jù)這些信息初始化對(duì)象,開(kāi)始新的一輪對(duì)象生命周期。所生成的HTML流再次從IIS返回到客戶。與首次請(qǐng)求頁(yè)面稍微有些不同,再次請(qǐng)求頁(yè)面時(shí),Page類的IsPostBack的屬性為True。該屬性指明頁(yè)面是否正被首次加載和訪問(wèn),或者是否正為響應(yīng)客戶端回發(fā)而加載。11.4效勞器端控件使用ASP.NET開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站,最重要的是控件的使用,用戶就是通過(guò)這些控件實(shí)現(xiàn)與頁(yè)面的交互。在Web窗體中使用的控件可以分為4類,它們分別是HTML效勞器控件、Web效勞器控件、Validation控件和用戶自定義控件。這些控件都可以稱為效勞器端〔Server〕控件,因?yàn)橹挥性谛谄鞫谁h(huán)境下,這些控件才能正常工作,瀏覽器是不能識(shí)別這些控件的。當(dāng)用戶請(qǐng)求包含這些控件的網(wǎng)頁(yè)時(shí),被請(qǐng)求網(wǎng)頁(yè)將首先在效勞器端執(zhí)行,以生成HTML文檔,并回送客戶端,瀏覽器再將結(jié)果顯示給用戶。此外,需要指出的是,Web窗體的某些高級(jí)功能必須在特定的瀏覽器上方可正常運(yùn)行。例如,有些功能必須在IE5及以上版本的瀏覽器中才能正常運(yùn)行。11.4.1控件的聲明及屬性、事件和方法在ASP.NET中聲明一個(gè)控件的方式有兩種,以前面兩章常用的標(biāo)簽控件Label和按鈕控件Button為例:聲明控件的第1種方法– <asp:Labelid="message"Text="歡送大家"runat="server"/>– <asp:Buttonid="enter"Text="確定"onClick="Enter_Click"runat="server"/>聲明控件的第2種方法– <asp:Labelid="message"runat="server">歡送大家</asp:Label>– <asp:Buttonid="enter"Text="確定"onClick="Enter_Click"runat="server"></asp:Button>在VB.NET中,所有的控件也是用類實(shí)現(xiàn)的,也可以看做一個(gè)對(duì)象,自然有它的屬性、方法和事件等。在上面聲明控件的語(yǔ)句中,id、runat都是控件的屬性,其中id表示這個(gè)控件的名稱,用來(lái)識(shí)別每一個(gè)控件。而runat="server"表示該控件運(yùn)行在效勞器端。這兩個(gè)屬性也是絕大局部控件所必需的。在Label控件中,有一個(gè)Text屬性,該屬性表示顯示的文本信息,它可以在聲明控件時(shí)賦值,也可以在程序代碼中賦值,如message.Text="歡送大家"。在Button控件中,有一個(gè)特殊的屬性onClick,它又稱為事件屬性。它表示當(dāng)用戶單擊按鈕時(shí),就執(zhí)行該屬性對(duì)應(yīng)的事件過(guò)程Enter_Click。11.4.2HTMLServer控件這一類控件是主要是為了保存原來(lái)的HTML元素標(biāo)記。一般和原來(lái)的HTML標(biāo)記一一對(duì)應(yīng),只是增加了runat=“server”。1〕向web窗體添加HTMLServer控件〔1〕選擇工具箱中的HTML選項(xiàng)卡,雙擊Button控件,將Button控件添加到web窗體中。目前該控件僅僅是一個(gè)HTML元素,在HTML視圖中添加了以下HTML代碼:<INPUTstyle="Z-INDEX:106;LEFT:408px;WIDTH:176px;POSITION:absolute;TOP:120px;HEIGHT:56px"type="button"value="Button">〔2〕切換回設(shè)計(jì)視圖,選擇web窗體中的Button控件,鼠標(biāo)右擊,選擇彈出菜單中的“作為效勞器控件運(yùn)行”命令。將Button控件設(shè)置成效勞器控件。此時(shí)在Button控件的左上角將出現(xiàn)一個(gè)綠色三角形,表示該控件已轉(zhuǎn)換為效勞器控件。在HTML視圖中該控件的HTML代碼:<INPUTstyle="Z-INDEX:106;LEFT:408px;WIDTH:176px;POSITION:absolute;TOP:120px;HEIGHT:56px";type="button"value="Button"id="Button4"name="Button4"runat="server">比較這兩行代碼,轉(zhuǎn)換為效勞器控件后,HTML代碼只是增加了runat=“server”屬性。能把HTML的元素轉(zhuǎn)換成效勞器端HTML控件的技術(shù),使得ASP.NET可以把其它網(wǎng)頁(yè)設(shè)計(jì)軟件〔如Frantpage、Dreamweaver等〕所設(shè)計(jì)的靜態(tài)網(wǎng)頁(yè)制作成動(dòng)態(tài)網(wǎng)頁(yè)。充分發(fā)揮不同軟件的優(yōu)點(diǎn)。2〕常見(jiàn)的HTMLServer控件及其相應(yīng)的HTML代碼〔1〕HtmlForm〔Web表單〕它其實(shí)就是一個(gè)容器,用來(lái)盛放其它表單控件。 <formid="控件名稱"runat="server"/> – …… </form>〔2〕HtmlInputText〔單行文本框和密碼框〕 <inputid="控件名稱" type="text|password" maxlength="整數(shù),表示輸入最大的字符數(shù)" size="整數(shù),表示文本框的寬度" value="文本框中的文字" runat="server"/>〔3〕HtmlTextArea〔多行文本框〕 <textareaid="控件名稱" cols="整數(shù)值,顯示的列數(shù)" rows="整數(shù)值,顯示的行數(shù)" value="多行文本框中的文字" runat="server"/>〔4〕HtmlInputHidden〔隱藏控件〕 <inputid="控件名稱" type="hidden" value="隱藏框中的文字" runat="server"/>〔5〕HtmlInputRadioButton〔單項(xiàng)選擇框〕 <inputid="控件名稱" type="radio" value="單項(xiàng)選擇框的值" name="組的名稱" checked="True|False" runat="server"/>〔6〕HtmlInputCheckBox〔復(fù)選框〕 <inputid="控件名稱" type="checkbox" value="復(fù)選框的值" checked="True|False" runat="server"/>〔7〕HtmlSelect〔下拉列表框〕 <selectid="控件名稱" size="整數(shù)值,表示顯示的行數(shù)" runat="server"> <optionvalue="選項(xiàng)值1">選項(xiàng)1</option> <optionvalue="選項(xiàng)值2">選項(xiàng)2</option> </select>〔8〕HtmlGenericControl〔一般控件〕 <body|span|div|…id="控件名稱" runat="server"/> 顯示的HTML代碼|顯示的文本 </body|span|div|…>〔9〕HtmlInputButton〔提交、重置和普通按鈕〕 <inputid="控件名稱" type="submit|reset|button" value="按鈕上的文字" onServerClick="事件過(guò)程名稱" runat="server"/>〔10〕HtmlInputFile〔文件上傳控件〕 <form>標(biāo)記上的Enctype屬性必須設(shè)置為"multipart/form-data"。 語(yǔ)法例如: <inputid="File1"type=filerunat="server">11.4.3Web效勞器控件Web效勞器控件是ASP.NET提供的與Windows的控件很相似的控件,方便了程序員。ASP.NE給我們提供了大量的豐富的Web控件,可以在System.Web.UI.WebControls名字空間下找到各種各樣的Web控件,例如:Button、TextBox等,同時(shí)也包括一些特殊用途的控件,如:廣告輪換控件、日歷控件,以及用戶驗(yàn)證控件等,比HTML效勞器控件功能更強(qiáng)。在“工具箱”的Web窗體選項(xiàng)卡中,包括了眾多的Web效勞器控件。這些Web效勞器控件可分為三類:根底Web控件、數(shù)據(jù)驗(yàn)證控件和數(shù)據(jù)綁定控件。Web控件的語(yǔ)法和HTML控件有一些區(qū)別,首先為了和HTML控件相區(qū)別,布置Web控件時(shí)必須在控件名稱前加上“Asp:”標(biāo)記,如下所示。<asp:Buttonid="Button1"style="Z-INDEX:102;LEFT:232px;POSITION:absolute;TOP:168px"runat="server"Width="112px"Text="Button"Height="40px"></asp:Button>其次在Web控件中不使用Value屬性,而是使用Text屬性。本章主要講述web窗體控件的應(yīng)用,因?yàn)樗砹薃SP未來(lái)開(kāi)展趨勢(shì)。例子11-2將表達(dá)這些控件的使用方法。例11-3:在線考試系統(tǒng)登錄界面的設(shè)計(jì)。圖11-7頁(yè)面中,用戶輸入“用戶名”和“密碼”后,選擇目的為“考試”,點(diǎn)擊“進(jìn)入”按鈕進(jìn)入考試頁(yè)面。1〕Label〔標(biāo)簽〕控件首先在頁(yè)面的上方用一個(gè)Label控件布置一個(gè)標(biāo)題作為頁(yè)面的主題。許多web效勞器控件的屬性、方法和事件與Windows窗體相對(duì)應(yīng)的控件根本一致。WebLabel效勞器控件與Windows窗體的Label控件的使用方法根本一樣。設(shè)置頁(yè)面上Label控件的屬性如下:圖11-7在線考試系統(tǒng)登錄界面控件ID屬性屬性值作用Label1FontX-Larger指示頁(yè)面主題BoldTrueTextVisualBasic.NET考試系統(tǒng)Label2Text用戶名注釋文本框Label3Text密碼注釋文本框Label4Text目的注釋文本框2〕Image〔圖像〕控件Image控件用于在網(wǎng)頁(yè)上顯示圖像,常用屬性如下:〔1〕ImageAlign屬性:圖片對(duì)齊方式?!?〕ImageUrl屬性:指定圖片的位置。通過(guò)動(dòng)態(tài)改變這個(gè)屬性,可以動(dòng)態(tài)改變圖片。在本例中首先把一個(gè)Logo.gif文件復(fù)制在虛擬目錄下,然后在Image控件德屬性對(duì)話框中選擇ImageUrl屬性,點(diǎn)擊屬性值一欄的“…”按鈕,彈出圖11-8“選擇圖像”對(duì)話框。在URL文本框中輸入Logo.gif。 應(yīng)注意URL類型的選擇項(xiàng),共有“絕對(duì)”、“與根相關(guān)的”、“與文檔相關(guān)的”三個(gè)選項(xiàng)。當(dāng)URL類型選擇“絕對(duì)”時(shí),那么應(yīng)在URL文本框中給出文件在磁盤中的絕對(duì)路徑。“與根相關(guān)的”選項(xiàng)那么要求URL是以虛擬目錄為根目錄的路徑,即該文件在網(wǎng)站中的位置〔用“/”來(lái)表示〕?!芭c文檔相關(guān)的”選項(xiàng)要求URL從本頁(yè)面文件出發(fā),到達(dá)圖像文件的路徑。表11-2Label1控件的屬性圖11-8選擇圖像對(duì)話框〔3〕AlternateText屬性:當(dāng)圖片不可用時(shí),例如用戶使用不支持圖像的瀏覽器或IE瀏覽器的“顯示圖像”的功能被禁用,Image控件中將顯示AlternateText屬性所設(shè)置的文本內(nèi)容,稱為替換文本。3〕TextBox〔文本框〕控件TextBox控件的主要屬性如下:〔1〕Rows屬性:多行文本框中顯示的行數(shù)。默認(rèn)值為0,表示顯示單行文本框?!?〕TextMode屬性:確定文本框控件是單行文本框、多行文本框還是密碼框。取值為SingleLine時(shí),那么是單行文本框;取值為MultiLine時(shí),那么是多行文本框;取值Password,那么是密碼框。本例中,“密碼”文本框的TextMode屬性設(shè)置為Password?!?〕TextBox的常用事件是TextChange,在Text屬性值更改時(shí)發(fā)生。在本例中的兩個(gè)TextBox控件屬性設(shè)置如下:控件ID屬性屬性值作用TxtName使用默認(rèn)設(shè)置輸入用戶名TxtCodeTextModePassword輸入密碼4〕RadioButton〔單項(xiàng)選擇按鈕〕控件RadioButton控件的主要屬性如下:〔1〕Checked屬性:確定是否被選中,如果值為ture那么表示被選中。〔2〕GroupName屬性:對(duì)單項(xiàng)選擇按鈕進(jìn)行分組的依據(jù)。同在一個(gè)組的單項(xiàng)選擇按鈕應(yīng)將它們的GroupName屬性值設(shè)置為同一個(gè)值,同一組中只能有一個(gè)控件被選中?!?〕RadioButton控件的常用事件是CheckedChanged事件。在默認(rèn)情況下,CheckedChanged事件并不立即向效勞器發(fā)送請(qǐng)求,如果要使CheckedChanged事件導(dǎo)致立即向效勞器發(fā)送請(qǐng)求,必須將RadioButton控件的AutoPostBack屬性設(shè)置為true。5〕RadioButtonList〔單項(xiàng)選擇按鈕列表〕控件RadioButtonList控件是為單項(xiàng)選擇按鈕組的容器。它的作用與多個(gè)RadioButton控件組成一組相同,都是用來(lái)讓用戶在一組相關(guān)的選項(xiàng)中選擇一項(xiàng)。RadioButtonList控件的許多屬性與RadioButton控件相同,其特有的屬性如下:表11-3例11-2的兩TextBox控件屬性設(shè)置控件ID屬性屬性值作用RadioButtonList1Items(0).text不保存是否把登錄信息通過(guò)cookie保留在客戶端的計(jì)算機(jī)上。Items(0).ValueTrueItems(1).text保存〔1〕Items屬性:設(shè)置列表中項(xiàng)的集合。選擇該屬性右側(cè)的按鈕,那么彈出一個(gè)如圖11-9所示的“ListItem集合編輯器”對(duì)話框,在此對(duì)話框內(nèi)選擇“添加”按鈕,可添加列表項(xiàng)。列表項(xiàng)的Selected屬性表示該列表項(xiàng)的初始選中狀態(tài);Text屬性表示該列表項(xiàng)的選項(xiàng)文本內(nèi)容;Value屬性表示與某個(gè)列表項(xiàng)關(guān)聯(lián)的值?!?〕RepeatColumns屬性:設(shè)置列表項(xiàng)的列數(shù)?!?〕RepeatDirection屬性:設(shè)置列表項(xiàng)的方向。可水平排列或垂直排列?!?〕RepeatLayout屬性:設(shè)置組內(nèi)列表項(xiàng)〔單項(xiàng)選擇按鈕〕的布局。取值為Table時(shí),那么在表中顯示列表項(xiàng);取值為Flow時(shí),不以表結(jié)構(gòu)的形式顯示列表項(xiàng)。在例11-2中,定義了1個(gè)RadioButtonList控件,根據(jù)用戶的選擇決定是否把登錄信息通過(guò)cookie保存在客戶端的計(jì)算機(jī)上。有關(guān)cookie將在11-6節(jié)介紹。例11-2的RadioButtonList控件屬性如表11-4所示。表11-4RadioButtonList1控件的屬性設(shè)置圖11-9ListItem集合編輯器對(duì)話框6〕命令按鈕控件在Web效勞器控件中,常用的按鈕控件有Button控件、ImageButton控件和LinkButton控件?!?〕Button控件通常使用Button控件的屬性設(shè)置按鈕的外觀特征,與Windows窗體的Button控件根本一樣。但是web窗體的Button控件的常用事件只有一種,即Click事件:當(dāng)用戶用鼠標(biāo)單擊Button控件時(shí),引發(fā)該事件,不支持DblClick事件。在例11-2中,添加一個(gè)Button控件,Name屬性為“ButEnter”,Text屬性為“進(jìn)入”。單擊該按鈕時(shí),效勞器將讀取數(shù)據(jù)庫(kù)信息,判斷用戶是否合法用戶。假設(shè)是那么進(jìn)入考試頁(yè)面,否那么效勞器返回“輸入用戶名和密碼錯(cuò)誤”信息?!?〕ImageButton控件ImageButton控件是一種常用的Web效勞器控件,它與Button控件幾乎一樣,只是外觀有所不同。ImageButton按鈕的大局部屬性與Button按鈕相同,單獨(dú)具有的主要屬性有以下幾種。ImageUrl屬性:設(shè)置圖像的Url??梢酝ㄟ^(guò)選擇其右邊的按鈕,在彈出的“選擇圖像”對(duì)話框中選擇圖像,該對(duì)話框與圖11-8一樣。ImageAlign屬性:設(shè)置圖像的對(duì)齊方式,有10種選擇。〔3〕LinkButton控件使用LinkButton控件可在網(wǎng)頁(yè)上創(chuàng)立超鏈接樣式的按鈕。LinkButton控件的外觀與HyperLink控件相同,而功能與Button控件相同。通過(guò)設(shè)置該控件的PostBackUrl屬性可以鏈接到其他網(wǎng)頁(yè)。7〕CheckBox〔復(fù)選框〕控件8〕CheckBoxList控件CheckBoxList控件是CheckBox〔復(fù)選框〕控件的容器。CheckBoxList控件的許多屬性與CheckBox控件相同,其特有的屬性有:Items,RepeatColumns、RepeatDirection和RepeatLayout,其意義與RadioButtonList相同。9〕ListBox〔列表框〕控件ListBox〔列表框〕控件的使用與對(duì)應(yīng)的Windows窗體控件相似。10〕DropDownList〔下拉列表框〕控件DropDownList控件的使用與Windows窗體的ComboBox控件相似。11〕HyperLink控件HyperLink控件用于創(chuàng)立超級(jí)鏈接,它可以是文本超級(jí)鏈接或圖像超級(jí)鏈接。HyperLink控件的常用屬性如下:〔1〕Text屬性:超級(jí)鏈接上顯示的文字。設(shè)置該屬性使控件顯示為文本超級(jí)鏈接。〔2〕ImageUrl屬性:超級(jí)鏈接上顯示圖像的路徑。設(shè)置該屬性使控件顯示為圖像超級(jí)鏈接。如果同時(shí)設(shè)置了Text和ImageUrl屬性,那么ImageUrl屬性優(yōu)先?!?〕NavigateUrl屬性:超級(jí)鏈接的URL,即要轉(zhuǎn)向網(wǎng)頁(yè)的網(wǎng)址?!?〕Target屬性:所鏈接網(wǎng)頁(yè)的顯示的位置。當(dāng)取值為“_blank”時(shí),表示在一個(gè)新翻開(kāi)的窗口中顯示鏈接網(wǎng)頁(yè);當(dāng)取值為“_parent”時(shí),表示在父框架窗口顯示鏈接網(wǎng)頁(yè);當(dāng)取值為“_self”時(shí),表示在超級(jí)鏈接所在的框架內(nèi)顯示鏈接網(wǎng)頁(yè);當(dāng)取值為“_top”時(shí),表示在沒(méi)有框架的全窗口中顯示鏈接網(wǎng)頁(yè)。當(dāng)網(wǎng)頁(yè)不存在框架集的情況下,Target屬性設(shè)置為“_parent”、“_self”和“_top”都是一樣的,所鏈接的網(wǎng)頁(yè)都是在當(dāng)前窗體中翻開(kāi)。有關(guān)框架集的內(nèi)容請(qǐng)參考網(wǎng)頁(yè)設(shè)計(jì)方面的書籍。12〕Panel控件〔容器控件〕Panel控件作為控件的容器,用于對(duì)控件進(jìn)行分組,在使用上類似于Windows窗體控件中的GroupBox控件。在例11-2中,我們使用Panel控件將“首頁(yè)”、“C#考試”、“VB論壇”、“C#”論壇“、”幫助“5個(gè)HyperLink布置在Panel控件中。與RadioButtonList控件分組的目的不同,在本例僅僅是為了把這5個(gè)控件作為一個(gè)整體,方便網(wǎng)頁(yè)布局。11.5

數(shù)據(jù)驗(yàn)證控件11.5.1RequiredFieldValidator〔必填驗(yàn)證〕RequiredFieldValidator控件可驗(yàn)證用戶是否在TextBox控件中輸入了數(shù)據(jù)值,或是否在SelectionList控件中選擇列表中的一項(xiàng),防止用戶提交信息時(shí)把一些重要的數(shù)據(jù)給忽略。在例11-2中,用戶不填寫這些數(shù)據(jù)就無(wú)法進(jìn)入考試頁(yè)面。在例11-2中,為了給用戶提醒,在“用戶名”和“密碼”文本框附加RequiredFieldValidator控件,步驟如下:〔1〕在工具箱的“web窗體”選項(xiàng)卡中,選擇并雙擊RequiredFieldValidator控件,把它添加到web窗體上?!?〕拖動(dòng)RequiredFieldValidator控件到“用戶名”文本框〔TxtName〕旁邊。〔3〕再添加一個(gè)RequiredFieldValidator控件到“密碼”文本框〔TxtCode〕旁邊?!?〕設(shè)置RequiredFieldValidator控件屬性,如表11-5所示。如果在Text屬性中輸入字符串,那么發(fā)生錯(cuò)誤時(shí),RequiredFieldValidator控件將顯示該文本。如果將Text屬性留空,那么RequiredFieldValidator控件將顯示ErrorMessage屬性中的字符串。程序運(yùn)行后,RequiredFieldValidator控件不可見(jiàn)。當(dāng)用戶未在文本框中輸入數(shù)據(jù),并按下“進(jìn)入”按鈕后,在文本框中將出現(xiàn)RequiredFieldValidator控件的Text屬性的文本??丶蘒D屬性屬性值作用RequiredFieldValidator1ControlToValidateTxtName防止用戶名為空ErrorMessage用戶名不能為空Text請(qǐng)輸入用戶名RequiredFieldValidator2ControlToValidateTxtCode防止密碼為空ErrorMessage密碼不能為空Text請(qǐng)輸入密碼表11-5RequiredFieldValidator控件屬性設(shè)置11.5.2RangeValidator〔范圍驗(yàn)證〕控件

RangeValidator控件用來(lái)驗(yàn)證輸入值是否在指定范圍內(nèi)。該控件除了ControlToValidate、ErrorMessage、Text屬性外,還有MinimumValue和MaximumValue屬性用來(lái)設(shè)置范圍的上、下限。11.5.3RegularExpressionValidator〔正那么驗(yàn)證〕控件控件ID屬性屬性值作用RegularExpressionValidator1ControlToValidateTxtCode驗(yàn)證密碼為6位數(shù)字ErrorMessage密碼只能是6位數(shù)字ValidationExpression[0-9]{6}Text密碼只能是6位數(shù)字RegularExpressionValidator控件用來(lái)驗(yàn)證輸入值是否和正那么表達(dá)式定義的模式匹配,常用來(lái)驗(yàn)證號(hào)碼、郵政編碼、E-mail等。該控件用來(lái)驗(yàn)證用戶在被驗(yàn)證控件中輸入的字符串是否和正那么表達(dá)式定義的模式匹配。在例11-2中要求密碼只能是6位數(shù)字,那么在“屬性”窗口中的ValidationExpression屬性中鍵入正那么表達(dá)式為:[0-9]{6}。除了可以直接輸入正那么表達(dá)式外,ASP.NET還預(yù)定義了一些正那么表達(dá)式供程序員使用。表11-6RegularExpressionValidator控件屬性設(shè)置11.5.4CompareValidator〔比較驗(yàn)證〕控件介紹CompareValidator控件將輸入數(shù)據(jù)與另一控件中的數(shù)據(jù)進(jìn)行比較,以確定這兩個(gè)值是否與由比較運(yùn)算符〔小于、等于、大于等〕指定的關(guān)系相匹配。使用CompareValidator控件還可以確定輸入到輸入控件中的值是否可以轉(zhuǎn)換為Type屬性所指定的數(shù)據(jù)類型。主要屬性有:〔1〕ControlToValidator屬性:要驗(yàn)證的控件的ID?!?〕ControlToCompare屬性:用于進(jìn)行比較的控件的ID?!?〕Operator屬性:對(duì)值進(jìn)行比較的操作,包括Equal〔相等〕、NotEqual〔不相等〕、GreaterThan〔大于〕、GreaterThanEqual〔大于等于〕、LessThan〔小于〕和LessThanEqual〔小于等于〕?!?〕Type屬性:用于進(jìn)行比較的值的數(shù)據(jù)類型,可以是String〔字符型〕、Integer〔整型〕、Double〔浮點(diǎn)型〕、Date〔日期型〕和Currency〔貨幣型〕。11.5.5ValidationSummary控件ValidationSummary控件本身沒(méi)有驗(yàn)證功能,但是可以集中顯示所有未通過(guò)驗(yàn)證的控件的錯(cuò)誤提示信息〔ErrorMessage〕,此控件集中列出窗體上其他驗(yàn)證控件生成的所有錯(cuò)誤消息。。ValidationSummary控件的主要屬性如下?!?〕HeaderText屬性:錯(cuò)誤消息前的標(biāo)題文本?!?〕DisplayMode屬性:顯示模式。取值為L(zhǎng)ist、BulletList或SinglePar

溫馨提示

  • 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)論