第5章學(xué)生信息注冊(cè)與系統(tǒng)_第1頁(yè)
第5章學(xué)生信息注冊(cè)與系統(tǒng)_第2頁(yè)
第5章學(xué)生信息注冊(cè)與系統(tǒng)_第3頁(yè)
第5章學(xué)生信息注冊(cè)與系統(tǒng)_第4頁(yè)
第5章學(xué)生信息注冊(cè)與系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩109頁(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)介

1、-5.1 學(xué)生信息注冊(cè)學(xué)生信息注冊(cè)-5.2 系統(tǒng)登錄系統(tǒng)登錄L5.1 學(xué)生信息注冊(cè)學(xué)生信息注冊(cè)L5.2 系統(tǒng)登錄系統(tǒng)登錄設(shè)計(jì)好的學(xué)生信息注冊(cè)模塊如圖5.1、圖5.2所示。圖5.1 用戶注冊(cè)頁(yè)面(1)圖5.2 用戶注冊(cè)頁(yè)面(2)設(shè)計(jì)好的登錄頁(yè)面效果如圖5.3所示。圖5.3 系統(tǒng)登錄頁(yè)面效果1學(xué)生信息注冊(cè)頁(yè)面的布局學(xué)生信息注冊(cè)頁(yè)面的布局為了方便學(xué)生的注冊(cè),把學(xué)生的注冊(cè)頁(yè)面分為3個(gè)視圖完成,第1個(gè)視圖學(xué)生錄入自己的學(xué)號(hào)和姓名,第2個(gè)視圖學(xué)生錄入自己的個(gè)人信息和密碼保護(hù)信息,第3個(gè)視圖顯示用戶錄入的信息,并提示用戶注冊(cè)成功。因此用戶注冊(cè)頁(yè)面的布局應(yīng)按照如圖5.4所示設(shè)計(jì)。圖5.4 學(xué)生信息注冊(cè)頁(yè)面的布

2、局2設(shè)計(jì)學(xué)生信息注冊(cè)頁(yè)面設(shè)計(jì)學(xué)生信息注冊(cè)頁(yè)面設(shè)計(jì)步驟如下所示:(1)打開(kāi)創(chuàng)建的“學(xué)生成績(jī)管理系統(tǒng)”網(wǎng)站項(xiàng)目,右擊“解決方案資源管理器”內(nèi)的Students文件夾,選擇“添加新項(xiàng)”選項(xiàng),在彈出的“添加新項(xiàng)”對(duì)話框中,選擇“Web窗體”模板,命名為“StudentRegister.aspx”,選擇“Visual C#”語(yǔ)言,不選中“選擇母版頁(yè)”復(fù)選框,單擊“添加”按鈕完成學(xué)生信息注冊(cè)頁(yè)面的創(chuàng)建。(2)切換到StudentRegister.aspx頁(yè)面的設(shè)計(jì)視圖,打開(kāi)屬性窗口并選擇頂部下拉框中的“Document” 文擋對(duì)象,設(shè)置StyleSheetTheme屬性為“主題1”,把光標(biāo)定位到“設(shè)計(jì)視圖

3、”中的Div內(nèi),打開(kāi)“應(yīng)用樣式”窗口(選擇“視圖”“應(yīng)用樣式”菜單項(xiàng)),單擊“應(yīng)用樣式”窗口中的“#innerLayout”樣式規(guī)則,給該層應(yīng)用樣式規(guī)則,打開(kāi)頁(yè)面的“源”視圖,選中標(biāo)記,打開(kāi)“應(yīng)用樣式”窗口,單擊“新建樣式”按鈕,出現(xiàn)“新建樣式”窗口,設(shè)置“選擇器”為“級(jí)聯(lián)樣式”,選中“塊”類(lèi)別,設(shè)置text-align屬性為“center”。(3)切換到StudentRegister.aspx頁(yè)面的源視圖,光標(biāo)定位在Div內(nèi),雙擊“工具箱”的“標(biāo)準(zhǔn)”選項(xiàng)卡中的MultiView控件,并在MultiView控件內(nèi)分別添加3個(gè)View控件,添加后視圖中的代碼如下: (4)切換到StudentRe

4、gister.aspx頁(yè)面的設(shè)計(jì)視圖,在3個(gè)View中分別添加Panel控件,3個(gè)Panel控件的GroupingText屬性分別設(shè)置為“錄入姓名與學(xué)號(hào)”、“錄入基本信息與密碼保護(hù)信息”和“你的填寫(xiě)信息”。(5)光標(biāo)定位到“錄入姓名與學(xué)號(hào)”的Panel中,選擇“表”“插入表”菜單項(xiàng),彈出“插入表格”對(duì)話框,設(shè)置行數(shù)為2,列數(shù)為3,單擊“確定”按鈕,添加一個(gè)2行3列的表格。按照同樣的方法在“錄入基本信息與密碼保護(hù)信息”P(pán)anel內(nèi)插入一個(gè)2行3列的表格,在“你的填寫(xiě)信息”P(pán)anel內(nèi)插入一個(gè)2行2列的表格。 (6)在“解決方案資源管理器”內(nèi),打開(kāi)主題文件夾中的StyleSheet.css文件,在

5、其內(nèi)部加入如下的代碼。(7)選擇“錄入姓名與學(xué)號(hào)”P(pán)anel內(nèi)的Table的第一列,通過(guò)“應(yīng)用樣式”窗口,給其應(yīng)用“ThreeTableOne”樣式,同樣的方法給第二列應(yīng)用“ThreeTableTwo”樣式,第三列應(yīng)用“ThreeTableThree”樣式?!颁浫牖拘畔⑴c密碼保護(hù)信息”P(pán)anel內(nèi)的Table的第一列應(yīng)用“ThreeTableOne”樣式,第二列應(yīng)用“ThreeTableTwo”樣式,第三列應(yīng)用“ThreeTableThree”樣式。“你的填寫(xiě)信息”P(pán)anel內(nèi)的Table第一列應(yīng)用“TwoTableOne”,第二列應(yīng)用“TwoTableTwo”。(8)在“錄入姓名與學(xué)號(hào)”P(pán)

6、anel內(nèi)的Table中按照如圖5.5所示添加控件,并按照表5.1設(shè)置相關(guān)控件的屬性。圖5.5 View1設(shè)計(jì)控 件 類(lèi) 型相關(guān)屬性和值TextboxID=“TextBoxstuID”, Width=“200 px”TextboxID=“TextBoxstuName”, Width=“200 px”RequiredFieldValidatorID=“RequiredFieldValidatorControlToValidate =“TextBoxstuName”ErrorMessage=“必須錄入姓名”RequiredFieldValidatorID=“RequiredFieldValidat

7、orControlToValidate =“TextBoxstuID”ErrorMessage=“必須錄入學(xué)號(hào)”ButtonID=“Button, Text=“下一步”, Width=“80 px”表5.1 控件屬性設(shè)置(9)在“錄入基本信息與密碼保護(hù)信息”P(pán)anel內(nèi)的Table中按照如圖5.6所示添加所需控件,相應(yīng)控件的添加與設(shè)置方法見(jiàn)表5.2。圖5.6 View2設(shè)計(jì)3編寫(xiě)學(xué)生信息注冊(cè)頁(yè)面后臺(tái)代碼編寫(xiě)學(xué)生信息注冊(cè)頁(yè)面后臺(tái)代碼添加代碼步驟如下:(1)頁(yè)面第一次加載的時(shí)候,設(shè)置MultiView默認(rèn)顯示第一個(gè)View,因此需要在Page的Load事件內(nèi)添加代碼,按【F7】鍵切換到Studen

8、tRegister.aspx.cs代碼頁(yè),添加如下代碼:/頁(yè)面第一次請(qǐng)求的時(shí)候執(zhí)行if (!Page.IsPostBack) this.MultiView1.ActiveViewIndex = 0; /顯示第一個(gè)視圖(2)當(dāng)用戶填寫(xiě)完學(xué)號(hào)和姓名后,單擊“下一步”按鈕,需要判斷系統(tǒng)里是否已有重復(fù)的學(xué)號(hào),如果有則提示用戶,沒(méi)有則設(shè)置MultiView顯示第二個(gè)View,并設(shè)置驗(yàn)證碼為當(dāng)前時(shí)間,因此需要添加“下一步”按鈕的Click事件代碼,按【F7】鍵切換到設(shè)計(jì)視圖,雙擊“下一步”按鈕,系統(tǒng)自動(dòng)切換到代碼頁(yè)并添加了“Button1_Click”方法,在此方法中添加如下代碼。在頂部引入如下的命名空間

9、:using System.Data.SqlClient;using System.Collections.Generic;(3)當(dāng)通過(guò)文件上傳控件瀏覽選中一個(gè)圖片后,單擊“上傳”按鈕把需要上傳的圖片上傳到服務(wù)器上,并通過(guò)Image控件顯示出所上傳的圖片。首先在解決方案資源管理器內(nèi)添加一個(gè)命名為“upload”文件夾用于存放圖片,按【F7】鍵切換到設(shè)計(jì)視圖,雙擊“上傳”按鈕,添加“上傳”按鈕的Click事件代碼,代碼如下所示:/*利用FileUpload控件的PostedFile屬性的SaveAs方法進(jìn)行保存,保存的路徑應(yīng)該是服務(wù)器端的絕對(duì)路徑*/利用Server.MapPath實(shí)現(xiàn)相對(duì)路徑與

10、絕對(duì)路徑的轉(zhuǎn)換this.FileUploadstuPic.PostedFile.SaveAs(Server.MapPath(/upload/) + this.FileUploadstuPic.FileName);/把上傳的文件的相對(duì)地址賦值給image控件this.ImagestuPic.ImageUrl = /upload/ + this.FileUploadstuPic.FileName;(4)填寫(xiě)完所有信息后,單擊“注冊(cè)完成”按鈕,實(shí)現(xiàn)把學(xué)生所填寫(xiě)的所有信息添加到數(shù)據(jù)庫(kù)中。按【F7】鍵切換到設(shè)計(jì)視圖,雙擊“注冊(cè)完成”按鈕,添加Click事件代碼,代碼如下。4在瀏覽器中使用本頁(yè)在瀏覽器中使

11、用本頁(yè)(1)在瀏覽器中查看本頁(yè),首先顯示如圖5.7所示的界面。圖5.7 學(xué)生注冊(cè)界面(a)(2)分別錄入用戶名和學(xué)號(hào),單擊“下一步”按鈕,則出現(xiàn)如圖5.8所示的錄入詳細(xì)信息界面:圖5.8 學(xué)生注冊(cè)界面(b)1設(shè)計(jì)系統(tǒng)登錄布局設(shè)計(jì)系統(tǒng)登錄布局登錄界面的布局設(shè)計(jì)如圖5.9所示。 用戶名用戶名輸入框密 碼密碼輸入框用戶類(lèi)別用戶類(lèi)別下拉框登 錄 系統(tǒng)圖標(biāo) 學(xué)生注冊(cè)圖5.9 登錄界面的布局設(shè)計(jì)2設(shè)計(jì)系統(tǒng)登錄頁(yè)面設(shè)計(jì)系統(tǒng)登錄頁(yè)面設(shè)計(jì)步驟如下:(1)打開(kāi)前面所創(chuàng)建的網(wǎng)站項(xiàng)目,在“資源管理器解決方案”中右擊“Default.aspx”,選擇“視圖設(shè)計(jì)器”,選中頁(yè)面中的div,通過(guò)“屬性”窗口設(shè)置其id為“ma

12、in”。(2)選擇“視圖”“應(yīng)用樣式”菜單項(xiàng),打開(kāi)“應(yīng)用樣式”窗口。單擊窗口中的“新建樣式”選項(xiàng),在彈出的“新建樣式”對(duì)話框中的選擇器框中輸入“#main”,選擇“定位”類(lèi)別,設(shè)置position為“absolute”,width為“700 px”,height為“180 px”,top為“50%”,left為“50%”。選擇“方框”類(lèi)別,設(shè)置margin的top為“90 px”,right和bottom為“0 px”,left為“350 px”。單擊“確定”按鈕,會(huì)在Default.aspx“源”視圖頂部生成如下的代碼。(3)切換到“源”視圖,在id為“main”的div內(nèi)添加如下代碼。 /

13、 標(biāo)記用來(lái)創(chuàng)建圓角矩形(4)在“源”視圖中,選中“fieldset”標(biāo)記,打開(kāi)“應(yīng)用樣式”窗口,單擊“新建樣式”選項(xiàng),在彈出的“新建樣式”對(duì)話框中設(shè)置“選擇器”為“級(jí)聯(lián)樣式”,選擇“定位”類(lèi)別,設(shè)置其width為“100%”,height為“100%”,修改后的代碼如下:(5)切換到“設(shè)計(jì)”視圖,把光標(biāo)定位到“fieldset”內(nèi),選擇“表”“插入表”菜單項(xiàng),在彈出的“插入表格”對(duì)話框中設(shè)置“行數(shù)”為“1”,“列數(shù)”為“2”,“寬度和高度”為“100%”,單擊“確定”按鈕,在fieldset標(biāo)記內(nèi)插入一個(gè)1行2列的表格。(6)選中左邊列,打開(kāi)“應(yīng)用樣式”窗口,單擊“新建樣式”按鈕,在彈出的“新

14、建樣式”對(duì)話框中設(shè)置“選擇器”為“級(jí)聯(lián)樣式”。選擇“定位”類(lèi)別,設(shè)置其width為“350 px”;選擇“邊框”類(lèi)別,設(shè)置右邊框的border-style為“solid”;選擇“背景”類(lèi)別,設(shè)置背景圖片為“主題”文件夾內(nèi)image文件夾中準(zhǔn)備好的圖片“system.gif”,background-repeat為“no-repeat”,x和y軸的background-position為“center”。以同樣的方法選中右邊列,設(shè)置其width為“350 px”,設(shè)置完畢后效果如圖5.10所示。圖5.10 左部效果圖(7)把光標(biāo)定位到第二個(gè)td標(biāo)記內(nèi),選擇“表”“插入表”菜單項(xiàng),在彈出的“插入表格

15、”對(duì)話框中設(shè)置“行數(shù)”為“4”,“列數(shù)”為“2”,寬度為“100%”,單擊“確定”按鈕,在此列中插入一個(gè)4行2列的表格。(8)打開(kāi)“應(yīng)用樣式”窗口,單擊“新建樣式”按鈕,在彈出的“新建樣式”對(duì)話框中設(shè)置“選擇器”為“.right”,“定位位置”為“當(dāng)前頁(yè)面”。選擇“定位”類(lèi)別,設(shè)置width屬性為“150 px”,height屬性為“35 px”;選擇“塊”,設(shè)置text-align屬性為“right”。單擊“確定”按鈕,在“當(dāng)前頁(yè)”內(nèi)創(chuàng)建一個(gè)嵌入式的css樣式規(guī)則,代碼如下: .right width: 150px; height: 35px; text-align: right; (9)打

16、開(kāi)“應(yīng)用樣式”窗口,單擊“新建樣式”按鈕,在彈出的“新建樣式”對(duì)話框中設(shè)置“選擇器”為“.left”,“定位位置”為“當(dāng)前頁(yè)面”。選擇“定位”類(lèi)別,設(shè)置width屬性為“200 px”,height屬性為“35 px”;選擇“塊”類(lèi)別,設(shè)置text-align屬性為“l(fā)eft”。單擊“確定”按鈕,在“當(dāng)前頁(yè)”內(nèi)創(chuàng)建一個(gè)嵌入式的css樣式規(guī)則,代碼如下:.left width: 200px; height: 35px; text-align: left;(10)選中右邊單元格內(nèi)的表格的第一列,打開(kāi)“應(yīng)用樣式”窗口,選中“right”樣式,給第一列應(yīng)用“right”樣式規(guī)則。選中右邊單元格內(nèi)的表格

17、的第二列,打開(kāi)“應(yīng)用樣式”窗口,選中“l(fā)eft”樣式,給第二列應(yīng)用“l(fā)eft”樣式規(guī)則。(11)如圖5.11所示,在表格內(nèi)添加相應(yīng)的文本和控件(標(biāo)準(zhǔn)選項(xiàng)卡內(nèi)),并按照表5.3設(shè)置相應(yīng)控件的屬性。控 件設(shè) 置第一行的文本框ID為“TextBoxUserName”,Width為“150 px”第二行的文本框ID為“TextBoxUserPassword”,Width為“150 px”,TextMode為“Password”第三行的下拉列表框ID為“DropDownListUserType”,Width為“150 px”,Items中添加4個(gè)成員,每個(gè)成員的Text和Value屬性分別為:“=選擇用

18、戶列別=”,“null”; “管理員”,“; “教師”,“; “學(xué)生”,“第四行的按鈕ID為“l(fā)oginButton”,Text為“登錄”,Width為“80 px”;ID為“ButStuRegister”,Text為“學(xué)生注冊(cè)”,Width為“80 px”圖5.11 右部效果圖表5.3 控件屬性設(shè)置(12)右擊此頁(yè)面,選擇“在瀏覽器中查看”選項(xiàng),瀏覽器中的效果如圖5.12所示。圖5.12 用戶登錄3編寫(xiě)系統(tǒng)登錄代碼編寫(xiě)系統(tǒng)登錄代碼(1)編寫(xiě)所需的基礎(chǔ)類(lèi)庫(kù)為了密碼管理的完全性,不能直接保存用戶的明文密碼,而應(yīng)該把用戶的密碼通過(guò)MD5加密后保存到數(shù)據(jù)庫(kù)中。此學(xué)生成績(jī)管理系統(tǒng)的教師密碼由管理員提供

19、,所以這里不對(duì)教師密碼加密,而只對(duì)學(xué)生密碼進(jìn)行加密。因?yàn)檫@個(gè)方法經(jīng)常使用,所以把其放入一個(gè)類(lèi)中,方便調(diào)用,其中還可以放置一些經(jīng)常使用的方法。右擊App_Code文件夾,打開(kāi)“添加新項(xiàng)”對(duì)話框,選擇“類(lèi)”模板,修改名稱為“commTools.cs”,類(lèi)內(nèi)部的代碼如下。(2)編寫(xiě)登錄驗(yàn)證代碼當(dāng)用戶在登錄框中填寫(xiě)完用戶信息,單擊“登錄”按鈕后,系統(tǒng)會(huì)利用用戶的輸入信息在系統(tǒng)數(shù)據(jù)庫(kù)中進(jìn)行查詢,判斷用戶是否在系統(tǒng)中存在,如果存在,繼續(xù)判斷用戶的密碼是否正確,并根據(jù)判斷的情況給用戶提示不同的信息。雙擊“登錄”按鈕,切換到Default.aspx.cs代碼頁(yè),系統(tǒng)自動(dòng)添加了loginButton_Click

20、方法,引入命名空間如下:using System.Collections.Generic;using System.Data.SqlClient;添加loginButton_Click方法中的代碼如下。(3)編寫(xiě)用戶登錄檢測(cè)代碼當(dāng)用戶登錄系統(tǒng)后,如果沒(méi)有退出,就可以在所允許的范圍內(nèi)任意瀏覽頁(yè)面,無(wú)需重新登錄。這個(gè)功能主要利用Session會(huì)話對(duì)象中保存的登錄用戶的信息自動(dòng)進(jìn)行判斷,來(lái)確定用戶是否能夠訪問(wèn)所訪問(wèn)的頁(yè)面。當(dāng)他們?cè)L問(wèn)一個(gè)頁(yè)面時(shí),Page_load事件首先會(huì)被執(zhí)行,因此可以在頁(yè)面的Page_load事件內(nèi)從Session會(huì)話對(duì)象中取出用戶的登錄信息,利用Session中的用戶信息判斷用

21、戶是否有權(quán)限訪問(wèn)所要訪問(wèn)的頁(yè)面。如果有權(quán)限,則會(huì)在瀏覽器中顯示出用戶所請(qǐng)求的頁(yè)面,如果用戶沒(méi)有權(quán)限訪問(wèn),則會(huì)自動(dòng)在后臺(tái)跳轉(zhuǎn)到用戶登錄頁(yè)面,讓用戶進(jìn)行登錄,所訪問(wèn)的頁(yè)面就無(wú)法顯示出來(lái)。此部分的代碼會(huì)被所有需要權(quán)限控制的頁(yè)面使用到,因此把這部分代碼封裝成一個(gè)方法,放在commTools類(lèi)中,在需要安全訪問(wèn)控制的頁(yè)面的Page_load()方法內(nèi)調(diào)用此方法即可,這樣方便代碼的修改和升級(jí)。封裝在commTools類(lèi)內(nèi)的代碼如下:/ / 判斷用戶是否能夠訪問(wèn)響應(yīng)的頁(yè)面,如果不能訪問(wèn),則進(jìn)行頁(yè)面跳轉(zhuǎn)/ / 所要判斷的頁(yè)面對(duì)象/ 指定能夠訪問(wèn)的用戶類(lèi)型public static void checkUser

22、(Page page,string userType) /從session中獲取當(dāng)前登錄的用戶的信息 string currentUserType = (string)page.SessionuserType; Boolean userLogin = (Boolean)page.SessionuserLogin; /如果用戶還沒(méi)有登錄就訪問(wèn)此頁(yè)面,或者非允許的用戶類(lèi)型訪問(wèn)此頁(yè)面就跳轉(zhuǎn)到登錄頁(yè)面 if (userLogin=false | (currentUserType != userType) page.Response.Redirect(/Default.aspx);(4)添加“學(xué)生注冊(cè)”

23、按鈕功能代碼當(dāng)單擊“學(xué)生注冊(cè)”按鈕后鏈接到注冊(cè)頁(yè)面(StudentRegister.aspx)。雙擊“學(xué)生注冊(cè)”按鈕,在“ButStuRegister_Click”方法中添加如下代碼:Response.Redirect(/Students/StudentRegister.aspx);L1. Web控件概述控件概述ASP.NET中的控件被組織成兩個(gè)名稱空間,即System.Web.UI.HtmlControls和System.Web.UI.WebControls。System.Web.UI.HtmlControls名稱空間包含HTML服務(wù)器控件,該類(lèi)服務(wù)器控件直接映射到HTML元素上;Syste

24、m.Web.UI.WebControls名稱空間包含Web服務(wù)器控件,Web服務(wù)器控件更豐富、抽象。網(wǎng)頁(yè)控件的層次結(jié)構(gòu)如圖5.13所示。圖5.13 ASP.NET網(wǎng)頁(yè)控件的層次結(jié)構(gòu)1. HTML服務(wù)器控件的層次結(jié)構(gòu)服務(wù)器控件的層次結(jié)構(gòu)HTML服務(wù)器控件是特殊的HTML元素,這些元素包含使其自身在服務(wù)器上可見(jiàn)并可編程的屬性。默認(rèn)情況下,服務(wù)器無(wú)法使用Web窗體頁(yè)上的HTML元素,這些元素被視為傳遞給瀏覽器的不透明文本。但是,通過(guò)將HTML元素轉(zhuǎn)換為HTML服務(wù)器控件,可將其公開(kāi)為可在服務(wù)器上編程的元素。Web窗體頁(yè)上的任意HTML元素都可以轉(zhuǎn)換為HTML服務(wù)器控件。轉(zhuǎn)換是一個(gè)只涉及幾個(gè)屬性的簡(jiǎn)單

25、過(guò)程。作為最低要求,通過(guò)添加RUNAT=SERVER屬性,HTML元素即可轉(zhuǎn)換為控件。如果要在代碼中作為成員引用HTML服務(wù)器控件,還應(yīng)當(dāng)為控件分配ID屬性。圖5.14顯示了HTML服務(wù)器控件的層次結(jié)構(gòu)。圖5.14 HTML 服務(wù)器控件的層次結(jié)構(gòu)2. HTML服務(wù)器控件的基本語(yǔ)法服務(wù)器控件的基本語(yǔ)法定義 HTML 服務(wù)器控件的基本語(yǔ)法是:由于HTML服務(wù)器控件是由HTML標(biāo)記所衍生出來(lái)的新功能,因此在所有的HTML服務(wù)器控件的語(yǔ)法中,最前端是HTML標(biāo)記,不同的控件用不同的標(biāo)志來(lái)標(biāo)記;runat = Server 表示控件將會(huì)在服務(wù)器端執(zhí)行;id用來(lái)設(shè)置控件的名稱,在同一程序中各控件的id均不

26、相同,id屬性允許以編程方式引用該控件。表5.4列舉了HTML標(biāo)簽,以及它們所屬的類(lèi)別。將普通HTML控件轉(zhuǎn)換為HTML服務(wù)器控件,只需簡(jiǎn)單地添加runat=server屬性。另外,可能還需要添加id屬性,這樣可以通過(guò)編程方式訪問(wèn)和控制控件。例如,下面是一個(gè)簡(jiǎn)單的輸入控件:可以添加id和runat屬性,將它轉(zhuǎn)換為HTML服務(wù)器控件,如下:因?yàn)镠TML控件只能運(yùn)行在客戶端,而不是服務(wù)器端,所有往往在ASP.NET下運(yùn)行現(xiàn)有的HTML頁(yè)時(shí)需進(jìn)行這樣的轉(zhuǎn)換。轉(zhuǎn)換后的HTML控件具有服務(wù)器控件的特點(diǎn):可以使用面向?qū)ο蠹夹g(shù)對(duì)其進(jìn)行編程控制;提供了一組事件,可以為事件編寫(xiě)事件處理程序;自動(dòng)維護(hù)控件;允許自

27、定義屬性等。在表5.4所列出的控件中,有幾個(gè)共同的屬性會(huì)經(jīng)常被使用,如Innerhtml、InnerText、Disabled、Visible、Value、Attributes及Style。下面分別進(jìn)行介紹。(1)InnerHtml屬性:獲取或設(shè)置控件的開(kāi)始標(biāo)記和結(jié)束標(biāo)記之間的內(nèi)容,但不自動(dòng)將特殊字符轉(zhuǎn)換為等效的HTML實(shí)體。下例說(shuō)明如何使用InnerHtml屬性動(dòng)態(tài)設(shè)置文本消息。protected void Page_Load(object sender, EventArgs e) Message.InnerHtml = Welcome! You accessed this page at:

28、 + DateTime.Now.ToString(); (2)InnerText屬性:獲取或設(shè)置控件的開(kāi)始標(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ù)器控件的所有特性。ASP.NET服務(wù)器控件提供統(tǒng)一的編程模型。例如,在HTML中,input標(biāo)簽()可用于按鈕、單行文本域、復(fù)選框、隱藏域和密碼。而多行文本域,則必須使用標(biāo)簽。使用ASP.NET服務(wù)器控件

29、時(shí),每種不同的功能類(lèi)型都將對(duì)應(yīng)一種特定控件。例如,使用TextBox控件輸入文本,并通過(guò)屬性指定行數(shù)。1. Web服務(wù)器控件的層次結(jié)構(gòu)服務(wù)器控件的層次結(jié)構(gòu)所有呈現(xiàn)到瀏覽器的、具有可視化外觀的Web服務(wù)器控件,都從WebControl類(lèi)派生。該類(lèi)提供了所有ASP.NET服務(wù)器控件的通用屬性、方法和事件。其中包括常用屬性,如BorderColor、BorderStyle和BorderWidth,以及RenderBeginTag和RenderEndTag方法。WebControl類(lèi)和其他一些ASP.NET服務(wù)器控件(如Literal、PlaceHolder、Repeater和XML)是從System

30、.Web.UI.Control派生,而System.Web.UI.Control又從System.Object派生。Control類(lèi)提供了一些基本屬性,如ID、EnableViewState、Parent和Visible,以及一些基本方法,如Dispose、Focus和RenderControl,還包括一些生命周期事件,如Init、Load、PreRender和Unload。從Control類(lèi)派生的WebControl類(lèi)和控件,位于System.Web.UI.WebControls命名空間中。它們之間的關(guān)系如圖5.15所示。圖5.15 Web服務(wù)器控件的層次結(jié)構(gòu)Web服務(wù)器控件繼承了WebCo

31、ntrol和System.Web.UI.Control類(lèi)的所有屬性、事件和方法。表5.5列出了從Control或WebControl類(lèi)繼承的Web服務(wù)器控件的常用屬性。2. Web服務(wù)器控件基本語(yǔ)法服務(wù)器控件基本語(yǔ)法ASP.NET 服務(wù)器控件的基本語(yǔ)法為:控件標(biāo)簽總是以“asp:”開(kāi)頭,這就是標(biāo)記前綴。controlType是控件的類(lèi)型或類(lèi),如Button、CheckBoxList、GridView等。可以利用 id 屬性,以編程方式引用控件實(shí)例。runat 屬性告知服務(wù)器,該控件在服務(wù)器端運(yùn)行??梢栽诩饫ㄌ?hào)中聲明其他屬性。例如,為 TextBox 聲明 Text 和 Width 屬性,如下所

32、示:雖然ASP.NET允許標(biāo)記的屬性值可以不加引號(hào),但是鑒于 ASP.NET 服務(wù)器控件必須使用良構(gòu)的XHTML語(yǔ)法,不建議讀者這樣做。需要明確的是,如上例所示,一般情況下,標(biāo)簽是成對(duì)出現(xiàn)的,也就是由起始標(biāo)簽和結(jié)束標(biāo)簽構(gòu)成。但若此標(biāo)簽僅占一行,也可在標(biāo)簽最后加一個(gè)“/”作為結(jié)束。所以,上面的TextBox也可以書(shū)寫(xiě)為:另外,許多Web服務(wù)器控件可以在起始和結(jié)束標(biāo)簽之間使用內(nèi)部HTML。例如,在TextBox 控件中,可將Text屬性指定為內(nèi)部 HTML,而不是將其設(shè)置在打開(kāi)標(biāo)簽的屬性中。所以,上面的控件又可以等價(jià)地寫(xiě)為:Enter a book name.3. Web服務(wù)器控件使用詳解服務(wù)器控

33、件使用詳解(1)TextBox文本框控件TextBox文本框控件是用得最多的控件之一,該控件可以用來(lái)顯示數(shù)據(jù)或輸入數(shù)據(jù)。定義的格式如下:TextBox控件有一個(gè)重要的屬性:TextMode。該屬性包括3個(gè)選項(xiàng): SingleLine:?jiǎn)涡芯庉嬁颉?MultiLine:帶滾動(dòng)條的多行文本框。 PassWord:密碼輸入框,所有輸入字符都用特殊字符(如“*”)來(lái)顯示。除此以外,TextBox控件還有一個(gè)常用的 TextChanged 事件,當(dāng)文字改變時(shí)引發(fā)此事件,可以編寫(xiě)事件處理代碼做出響應(yīng)。下面的代碼演示如何響應(yīng) TextBox 控件中的更改,在標(biāo)簽中顯示文本框控件的內(nèi)容。protected v

34、oid TextBox1_TextChanged(object sender, EventArgs e) Label1.Text = Server.HtmlEncode(TextBox1.Text);默認(rèn)情況下,TextChanged 事件并不馬上導(dǎo)致向服務(wù)器回發(fā) Web 頁(yè),而是當(dāng)下次發(fā)送窗體時(shí)在服務(wù)器代碼中引發(fā)此事件。若要使 TextChanged 事件引發(fā)即時(shí)發(fā)送,需將 TextBox 控件的 AutoPostBack(自動(dòng)回傳)屬性設(shè)置為 true。(2)Button、LinkButton和ImageButton按鈕控件網(wǎng)頁(yè)控件中的按鈕分為三種:Button、LinkButton和Im

35、ageButton。它們功能基本相同,但外觀上有區(qū)別。Button的外觀與傳統(tǒng)按鈕的外觀相同;LinkButton的外觀與超鏈接字符串相同;ImageButton按鈕用圖形方式顯示外觀,其圖像通過(guò)ImageURL屬性來(lái)設(shè)置。三種按鈕的功能都與HTML的提交按鈕(Submit Button)相似,即每當(dāng)這些按鈕被單擊(Click)時(shí),就將緩沖區(qū)中的事件信息一并提交給服務(wù)器。定義上述三種按鈕的語(yǔ)法如下:鏈接按鈕下面的代碼功能是用鼠標(biāo)單擊LinkButton按鈕,該按鈕即可通過(guò)服務(wù)器轉(zhuǎn)向新的網(wǎng)頁(yè),從而起到“超鏈接”的作用。在LinkButton按鈕的Click事件中寫(xiě)出以下程序: private v

36、oid LinkButton1_Click(object sender, System.EventArgs e)Response.Redirect(其他窗體的URL);三種按鈕的共同屬性: PostBackUrl屬性:利用這個(gè)屬性可以將按鈕變成“返回”按鈕。即先將該屬性設(shè)成某個(gè)網(wǎng)頁(yè)的URL,以后單擊該按鈕時(shí)就會(huì)直接轉(zhuǎn)向該網(wǎng)頁(yè)。 OnClientClick屬性:定義當(dāng)單擊按鈕時(shí)執(zhí)行的客戶端腳本,通常是一個(gè)腳本函數(shù)的函數(shù)名。 CommandName屬性:當(dāng)在網(wǎng)頁(yè)上具有多個(gè)按鈕控件時(shí),可使用 CommandName 屬性來(lái)指定或確定與每一個(gè)按鈕控件關(guān)聯(lián)的命令名??梢杂脴?biāo)識(shí)要執(zhí)行的命令的任何字符串來(lái)設(shè)

37、置 CommandName 屬性。然后,以編程方式確定按鈕控件的命令名并執(zhí)行相應(yīng)的操作。三種按鈕的共同事件: Click事件:按鈕的OnClick屬性對(duì)應(yīng)的值就是此事件添加的處理函數(shù)的函數(shù)名。處理函數(shù)將在服務(wù)器端執(zhí)行,如果為某個(gè)按鈕控件同時(shí)指定了OnClientClick屬性和OnClick屬性,那么將優(yōu)先響應(yīng)客戶端的處理。 Command事件:當(dāng)單擊按鈕控件時(shí)會(huì)引發(fā) Command 事件。通常當(dāng)命令名(如 Sort)與按鈕控件關(guān)聯(lián)時(shí),才會(huì)使用該事件。這使得可以在一個(gè)網(wǎng)頁(yè)上創(chuàng)建多個(gè)按鈕控件,并以編程方式確定單擊了哪個(gè)按鈕控件。(3)CheckBox和CheckBoxList復(fù)選控件CheckB

38、ox 和 CheckBoxList復(fù)選控件為用戶提供了在真/假、是/否或開(kāi)/關(guān)選項(xiàng)之間進(jìn)行選擇的方法。CheckBox 是單個(gè)控件,可以單獨(dú)使用。而CheckBoxList 控件是復(fù)選框列表控件,可以將多個(gè)CheckBox組合在一起使用。使用單個(gè) CheckBox 控件時(shí),更容易控制頁(yè)面上的布局。例如,可以在各個(gè)復(fù)選框之間包含文本,也可以單獨(dú)控制復(fù)選框的字體和顏色。如果想用數(shù)據(jù)庫(kù)中的數(shù)據(jù)創(chuàng)建一系列復(fù)選框,則 CheckBoxList 控件是較好的選擇。使用CheckBoxList時(shí)要給控件增添選項(xiàng)。方法是先選擇該控件,然后找到控件的Items屬性,單擊右邊的省略號(hào)按鈕,將彈出如圖5.16所示的

39、對(duì)話框。利用“添加”按鈕,按照?qǐng)D5.16中的選項(xiàng)得出的頁(yè)面部分如圖5.17所示。 圖5.16 編輯CheckBoxList的選項(xiàng) 圖5.17 CheckBoxList選項(xiàng)(4)RadioButton和RadioButtonList單選控件RadioButton和RadioButtonList單選控件的作用和使用方法與CheckBox基本相同,唯一的差別在于,在一個(gè)RadioButtonList內(nèi)的多個(gè)RadioButton之間只能有一項(xiàng)被選中,而在CheckBoxList中可以同時(shí)選中多項(xiàng)。(5)ListBox控件ListBox 控件通常用于一次顯示一個(gè)以上的項(xiàng)??梢栽谝韵聝煞矫婵刂屏斜淼耐庥^

40、: 顯示的項(xiàng)數(shù)。可將該控件設(shè)置為顯示特定的項(xiàng)數(shù)。如果該控件包含比設(shè)置的項(xiàng)數(shù)更多的項(xiàng),則顯示一個(gè)垂直滾動(dòng)條。 高度和寬度。可以以像素為單位設(shè)置控件的大小。在這種情況下,控件將忽略已設(shè)置的行數(shù),而是顯示足夠多的行直至填滿控件的高度。ListBox控件的主要屬性和事件如下: AutoPostBack屬性:若該屬性為T(mén)rue,則當(dāng)更改選項(xiàng)內(nèi)容后會(huì)自動(dòng)回發(fā)到服務(wù)器;若為False,則不回發(fā)。 Rows屬性:表示可以顯示的選項(xiàng)行數(shù)。 Items屬性:是ListBox控件各選項(xiàng)的集合。通過(guò)該屬性可以獲取對(duì)當(dāng)前存儲(chǔ)在ListBox中的項(xiàng)列表的引用,通過(guò)此引用,可以在集合中添加項(xiàng)、移除項(xiàng)和獲得項(xiàng)的計(jì)數(shù)。每個(gè)列表

41、項(xiàng)都是一個(gè)單獨(dú)的對(duì)象,具有自己的屬性,見(jiàn)表5.6。屬 性說(shuō) 明Text列表中顯示的文本Value與某個(gè)項(xiàng)關(guān)聯(lián)的值。設(shè)置此屬性可將該值與特定的項(xiàng)關(guān)聯(lián),而不顯示該值。例如,可以將 Text 屬性設(shè)置為某個(gè)職員的名字,將 Value 屬性設(shè)置為該職員的電子郵件別名Selected布爾值,指示該項(xiàng)是否被選定。如果 ListBox 被設(shè)置為允許多重選擇,則可選擇一項(xiàng)以上表5.6 ListBox控件中列表項(xiàng)的基本屬性 SelectionMode屬性:該屬性指明一次是否可多選。SelectionMode屬性可以有兩個(gè)取值:Single表明在ListBox中僅能選擇一項(xiàng);Multiple表明可以選擇多項(xiàng)。如果

42、將 ListBox 控件設(shè)置為允許進(jìn)行多重選擇,則可以在按住【Ctrl】或【Shift】鍵的同時(shí),單擊選擇多個(gè)項(xiàng)。當(dāng)用戶單擊列表選項(xiàng)時(shí),ListBox 控件將引發(fā)SelectedIndexChanged 事件。默認(rèn)情況下,此事件不會(huì)導(dǎo)致將頁(yè)發(fā)送到服務(wù)器,可以通過(guò)將 AutoPostBack 屬性設(shè)置為 true,使此控件強(qiáng)制立即回發(fā)。下面的代碼示例演示如何響應(yīng) ListBox 控件中的選擇。事件處理程序?qū)⒂脩暨x擇的選項(xiàng)顯示在 Label 控件中。Protected void ListBox1_SelectedIndexChanged(object sender, System.EventArg

43、s e) Label1.Text = You selected + ListBox1.SelectedItem.Text;(6)DropDownList 控件DropDownList控件是一個(gè)用下拉框方式顯示選項(xiàng)的控件,它允許用戶從預(yù)定義下拉列表中進(jìn)行單行選擇。該控件與ListBox控件的不同之處在于:它在框中顯示選定項(xiàng),同時(shí)還顯示下拉按鈕。若用戶單擊此按鈕,將顯示項(xiàng)的列表;另外,DropDownList控件不支持多重選擇模式。DropDownList控件使用語(yǔ)法: 或 DropDownList控件的主要屬性和事件如下: AutoPostBack 屬性:若該屬性為 True,則當(dāng)更改選項(xiàng)內(nèi)容后

44、會(huì)自動(dòng)回發(fā)到服務(wù)器;若為False,則不回發(fā)。 Items 屬性:Items 屬性是DropDownList 控件各選項(xiàng)的集合。每個(gè)列表項(xiàng)都是一個(gè)單獨(dú)的對(duì)象,具有自己的屬性,同 ListBox 控件。DropDownList 控件可用來(lái)列出從某個(gè)數(shù)據(jù)源讀取的選項(xiàng)。DropDownList 控件中的每一項(xiàng)分別對(duì)應(yīng)數(shù)據(jù)源中的一項(xiàng)(通常是一行)。相關(guān)屬性和事件如下: DataSource 屬性:獲取或設(shè)置此 DropDownList 控件的數(shù)據(jù)源。 DataTextField 屬性:指明用于提供選項(xiàng)文本的數(shù)據(jù)源字段。 DataValueField 屬性:該屬性表示指定數(shù)據(jù)源的相關(guān)數(shù)據(jù)字段的值。 Se

45、lectedIndexChanged 事件:當(dāng)用戶選擇一項(xiàng)時(shí),DropDownList 控件將引發(fā)SelectedIndexChanged 事件。默認(rèn)情況下,此事件不會(huì)導(dǎo)致向服務(wù)器發(fā)送頁(yè)面,但當(dāng)將AutoPostBack 屬性設(shè)置為true時(shí),此控件強(qiáng)制立即發(fā)送。(7)HyperLink超鏈接控件HyperLink控件提供了一種使用服務(wù)器代碼在Web頁(yè)上創(chuàng)建和操作鏈接的方法,使用戶可以在應(yīng)用程序中的頁(yè)之間移動(dòng)。HyperLink超鏈接控件有4個(gè)重要的屬性。 Text屬性:HyperLink 控件的文本標(biāo)題。 ImageUrl 屬性:使用ImageUrl屬性指定為HyperLink控件顯示的圖像

46、。HyperLink控件可以顯示為文本或圖像,如果同時(shí)設(shè)置了 Text 和 ImageUrl 屬性,則 ImageUrl 屬性優(yōu)先。如果圖像不可用,則顯示Text屬性中的文本。 NavigateUrl 屬性:使用NavigateUrl屬性指定單擊 HyperLink 控件時(shí)定位到的URL。 Target 屬性:使用Target屬性指定單擊 HyperLink 控件時(shí)顯示鏈接到哪個(gè)Web窗口或頁(yè)框架。使用 HyperLink 控件而不是傳統(tǒng)的 HTML 超鏈接標(biāo)簽的好處是: 可以在服務(wù)器代碼中設(shè)置鏈接屬性。例如,可以基于頁(yè)面中的條件動(dòng)態(tài)地更改鏈接文本或目標(biāo)頁(yè)。 可以使用數(shù)據(jù)綁定來(lái)指定鏈接的目標(biāo)

47、URL(以及必要時(shí)與鏈接一起傳遞的參數(shù))。需要注意的一點(diǎn),與大多數(shù) Web 服務(wù)器控件不同的是,當(dāng)用戶單擊 HyperLink 控件時(shí)并不會(huì)在服務(wù)器代碼中引發(fā)任何事件,此控件只用于導(dǎo)航。(8)Image與ImageMap圖像控件利用Image圖像控件可以在Web窗體頁(yè)上顯示圖像,并用自己的代碼來(lái)管理這些圖像。圖像源文件可以在設(shè)計(jì)時(shí)確定,也可以在程序運(yùn)行中指定,還可以將控件的ImageURL屬性綁定到數(shù)據(jù)源上,根據(jù)數(shù)據(jù)源的信息來(lái)選擇圖像。與大多數(shù)其他Web服務(wù)器控件不同,Image控件不支持鼠標(biāo)單擊(click)事件。如果需要使用鼠標(biāo)單擊事件時(shí),可以使用ImageButton控件來(lái)代替Image

48、控件。顯示一個(gè)圖像所需的最少操作是:先創(chuàng)建一個(gè)Image控件,然后指定一個(gè)圖像文件。具體步驟如下。進(jìn)入“設(shè)計(jì)”視圖,在“工具箱”中展開(kāi)“標(biāo)準(zhǔn)”選項(xiàng)卡,然后將一個(gè)Image控件拖放到網(wǎng)頁(yè)界面上。將控件的ImageURL屬性設(shè)置為.gif、.jpg或其他網(wǎng)絡(luò)圖形文件的URL。給Image控件設(shè)置以下屬性。 Height和Width:在頁(yè)面上為圖形保留適當(dāng)空間(高度和寬度)。 ImageAlign:用來(lái)設(shè)置圖像對(duì)齊的方式??墒褂玫闹蛋═op、Bottom、Left、Middle和Right。 AlternateText:有的瀏覽器不支持加載圖像時(shí),替代圖像的文本。ImageMap控件可以用來(lái)顯示圖

49、像,也可以實(shí)現(xiàn)圖像的超鏈接。該控件的最大特點(diǎn)是,可以將ImageMap中的圖像按照(X,Y)坐標(biāo)劃分成不同形狀的區(qū)域,分別鏈接到不同的網(wǎng)頁(yè)。該控件的ImageUrl屬性用來(lái)連接圖像源文件;HotSpot屬性用來(lái)劃分鏈接區(qū)域。單擊HotSpot屬性右邊的省略號(hào)按鈕,彈出如圖5.18所示的對(duì)話框。圖5.18 編輯ImageMap控件的HotSpot(9)FileUpload 控件應(yīng)用程序中經(jīng)常需要允許用戶把文件上傳到Web服務(wù)器。盡管在ASP.NET 1.X也可以完成該功能,但在ASP.NET中使用FileUpload控件會(huì)更簡(jiǎn)單。該控件讓用戶更容易地瀏覽和選擇用于上傳的文件,它包含一個(gè)瀏覽按鈕和

50、用于輸入文件名的文本框。只要用戶在文本框中輸入了完全限定的文件名,無(wú)論是直接輸入或通過(guò)瀏覽按鈕選擇,都可以通過(guò)調(diào)用FileUpload的SaveAs方法保存到磁盤(pán)上。用戶選擇要上傳的文件后,F(xiàn)ileUpload 控件不會(huì)自動(dòng)將該文件保存到服務(wù)器。必須顯式提供一個(gè)控件或機(jī)制,使用戶能提交指定的文件。例如,可以提供一個(gè)按鈕,用戶單擊它即可上傳文件。為保存指定文件所寫(xiě)的代碼應(yīng)調(diào)用 SaveAs 方法,該方法將文件內(nèi)容保存到服務(wù)器上的指定路徑。通常,在引發(fā)回發(fā)到服務(wù)器的事件的事件處理方法中調(diào)用 SaveAs 方法。例如,如果提供一個(gè)用于提交文件的按鈕,則可以將執(zhí)行文件保存操作的代碼放在單擊事件的事件處

51、理方法中。可以通過(guò)FileUpload的一些重要屬性訪問(wèn)上傳的文件: FileName屬性:用來(lái)獲取客戶端上使用 FileUpload 控件上傳文件的名稱。此屬性返回的文件名不包含此文件在客戶端上的路徑。 FileBytes 屬性:該屬性從使用 FileUpload 控件指定的文件返回一個(gè)字節(jié)數(shù)組,包含了指定文件的內(nèi)容。 FileContent 屬性:該屬性獲取 Stream 對(duì)象,該對(duì)象指向使用 FileUpload 控件上傳的文件??梢允褂?FileContent 屬性來(lái)訪問(wèn)文件的內(nèi)容。例如,可以使用該屬性返回的 Stream 對(duì)象以字節(jié)方式讀取文件內(nèi)容,并將它們存儲(chǔ)在一個(gè)字節(jié)數(shù)組中。 P

52、ostedFile 屬性:PostedFile 屬性獲取文件的基礎(chǔ) HttpPostedFile 對(duì)象(該文件使用 FileUpload 控件上傳)。使用該屬性還可訪問(wèn)上傳文件的其他屬性。例如,可以使用 ContentLength 屬性來(lái)獲取文件的長(zhǎng)度,使用 ContentType 屬性來(lái)獲取文件的 MIME 內(nèi)容類(lèi)型。需要注意的是,防止攻擊者利用FileUpload控件發(fā)起拒絕服務(wù)攻擊的方法之一就是限制使用 FileUpload 控件上傳文件的大小。應(yīng)當(dāng)根據(jù)要上傳的文件的類(lèi)型,設(shè)置與類(lèi)型相適應(yīng)的大小限制。默認(rèn)大小限制為 4096 KB (4 MB)。可以通過(guò)設(shè)置web.config 配置文件

53、中httpRuntime 元素的 maxRequestLength 屬性設(shè)置允許上傳更大的文件。(10)Panel 控件Panel Web 服務(wù)器控件在 Web 窗體頁(yè)內(nèi)提供了一種容器控件,可以將它用做靜態(tài)文本和其他控件的父級(jí)。此外,可將 Panel 控件用于其他目的: 對(duì)控件和標(biāo)記進(jìn)行分組。對(duì)于一組控件和相關(guān)的標(biāo)記,可以通過(guò)把其放置在Panel控件中,然后操作此 Panel 控件,以將它們作為一個(gè)單元進(jìn)行管理。例如,可以通過(guò)設(shè)置Panel的 Visible 屬性來(lái)隱藏或顯示該面板中的一組控件,而不必去設(shè)置面板中每一個(gè)控件的 Visible 屬性。 具有默認(rèn)按鈕的窗體。可將 TextBox 控

54、件和 Button 控件放置在 Panel 控件中,然后通過(guò)將 Panel 控件的 DefaultButton 屬性設(shè)置為面板中某個(gè)按鈕的 ID,來(lái)定義一個(gè)默認(rèn)的按鈕。如果用戶在面板內(nèi)的文本框中進(jìn)行輸入時(shí)按 Enter鍵,這將與單擊特定的默認(rèn)按鈕具有相同的效果。 動(dòng)態(tài)生成的控件的容器。Panel控件為在運(yùn)行時(shí)創(chuàng)建的控件提供了一個(gè)方便的容器。Panel控件有以下常用屬性: HorizontalAlign:指定子控件在面板內(nèi)的對(duì)齊方式(左對(duì)齊、右對(duì)齊、居中或兩端對(duì)齊)。 Direction:指定控件的內(nèi)容是從左到右還是從右到左進(jìn)行呈現(xiàn)。當(dāng)在頁(yè)面上創(chuàng)建與整個(gè)頁(yè)面的方向不同的區(qū)域時(shí),此屬性非常有用。

55、ScrollBars:可以通過(guò)設(shè)置此屬性來(lái)添加水平或垂直方向的滾動(dòng)條。(11)Calendar控件Calendar服務(wù)器控件在ASP.NET網(wǎng)頁(yè)中顯示一個(gè)單月份日歷。用戶可使用該日歷查看和選擇日期。該控件基于.NET Framework DataTime對(duì)象,因此支持該對(duì)象所允許的全部日期范圍。用戶可有效地顯示從公元0年9999年之間的任意日期。使用該控件的一般語(yǔ)法形式如下:Calender控件的常用屬性如表5.7所示。屬 性 名說(shuō) 明SelectedDate被選中的日期SelectionMode用戶被允許選擇日期的方式??墒褂孟铝兄抵唬篘one(無(wú))、Day(日)、DayWeek(日、星期

56、)、DayWeekMonth(日、星期、月)SelectionDayStyle被選中日的格式TadayDayStyle當(dāng)天日期的樣式表5.7 Calender控件的常用屬性(12)MultiView與View控件View控件與MultiView控件作為控件或標(biāo)記的容器,提供了一種很方便地切換信息視圖的方式。使用View控件與MultiView控件可以實(shí)現(xiàn)如下的任務(wù)。 根據(jù)用戶的選擇或其他條件提供不同的頁(yè)面。例如,可能允許用戶從一個(gè)列表中選擇,其中每個(gè)項(xiàng)都有獨(dú)立的View控件與之對(duì)應(yīng),然后可以顯示用戶選擇的View控件內(nèi)的內(nèi)容。 創(chuàng)建多頁(yè)窗體。View控件與MultiView控件可以提供與Wiz

57、ard控件類(lèi)似的行為。例如,每個(gè)操作可能需要多個(gè)步驟才可以完成,不同的步驟所要顯示的界面不同,就可以在MultiView內(nèi)放多個(gè)View,在不同的View內(nèi)繪制不同的界面,通過(guò)用戶的操作步驟,依次顯示出對(duì)應(yīng)的視圖。MultiView控件用做一個(gè)或多個(gè)View控件的外部容器,View控件可以包含標(biāo)記和控件的任何集合。MultiView控件一次只能顯示一個(gè)View控件,并顯示此View控件內(nèi)的標(biāo)記和控件。通過(guò)重置MultiView控件的ActiveViewIndex屬性,可以指定當(dāng)前可見(jiàn)的View控件。通過(guò)MultiView控件的ActiveViewIndex屬性可以設(shè)置要顯示的View控件,其中

58、第一個(gè)View為0,第二個(gè)為1,依次類(lèi)推。MultiView控件還支持添加到每個(gè)View內(nèi)部的導(dǎo)航控件。若要?jiǎng)?chuàng)建導(dǎo)航按鈕,可以向每個(gè)View控件添加一個(gè)按鈕控件,然后可以將每個(gè)按鈕的CommandName和CommandArgument屬性設(shè)置為空字符串,以使MultiView控件切換到另一個(gè)View。表5.8列出了CommandName值和相應(yīng)的CommandArgument值的組合。CommandName值CommandArgument值NextView不需要設(shè)置PrivView不需要設(shè)置SwitchViewByID要切換到的View控件的IDSwitchViewByIndex要切換到的V

59、iew控件的索引號(hào)表5.8 不同的命令類(lèi)型與命令參數(shù)1. 驗(yàn)證控件的分類(lèi)及作用驗(yàn)證控件的分類(lèi)及作用ASP.NET 提供了6 種驗(yàn)證控件。各種驗(yàn)證控件的作用如下: RequiredFieldValidator 控件:用于檢查用戶是否在輸入控件中輸入了數(shù)據(jù)。 CompareValidator 控件:將輸入控件的值與常數(shù)值或其他輸入控件的值相比較,以確定這兩個(gè)值是否與由比較運(yùn)算符(小于、等于、大于)指定的關(guān)系相匹配。 RangeValidator 控件:用于檢查用戶的輸入是否在一個(gè)特定的范圍內(nèi)。 RegularExpressionValidator 控件:用于檢查用戶的輸入是否與正則表達(dá)式所定義的模

60、式匹配。 CustomValidator 控件:通過(guò)用戶自定義的驗(yàn)證函數(shù)判定輸入的數(shù)據(jù)是否有效。 ValidationSummary 控件:以列表的形式顯示頁(yè)面上所有驗(yàn)證控件所搜索到的驗(yàn)證錯(cuò)誤。其中ValidationSummary 控件只能與前5種驗(yàn)證控件一起使用,不能單獨(dú)執(zhí)行驗(yàn)證。另外在這些控件中,除RequiredFieldValidator控件以外,其他所有的控件都認(rèn)為空字段是合法的。2. 使用驗(yàn)證控件使用驗(yàn)證控件各個(gè)控件雖然作用不同,但使用的方法卻有很多共同點(diǎn)。除了ValidationSummary 控件外,其他的驗(yàn)證控件都繼承于共同的基類(lèi)BaseValidator,每個(gè)控件都有一個(gè)

溫馨提示

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