第5章Web窗體和常用服務(wù)器控件_第1頁
第5章Web窗體和常用服務(wù)器控件_第2頁
第5章Web窗體和常用服務(wù)器控件_第3頁
第5章Web窗體和常用服務(wù)器控件_第4頁
第5章Web窗體和常用服務(wù)器控件_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章

Web窗體和常用服務(wù)器控件

ASP.NET服務(wù)器控件的基本概念

ASP.NET中內(nèi)部常用控件的使用方法

ASP.NET中驗(yàn)證控件的使用方法5.1ASP.NET網(wǎng)站的邏輯結(jié)構(gòu)5.1.1概述5.1.2ASP.NET網(wǎng)站的組成一個(gè)網(wǎng)站通常由多種文件組成,主要包括以下5個(gè)部分。 (1)一個(gè)在IIS信息服務(wù)器中的虛擬目錄。這個(gè)虛擬目錄被配置為應(yīng)用程序的根目錄。 (2)一個(gè)或多個(gè)帶.aspx擴(kuò)展名的網(wǎng)頁文件,還允許放入若干.htm、.asp網(wǎng)頁或其他類型的文件。 (3)零個(gè)或多個(gè)Web.config配置文件。 (4)一個(gè)以Global.asax命名的全局文件。 (5)幾個(gè)專用的共享目錄。1.虛擬目錄虛擬目錄又稱為目錄的“別名”,是以服務(wù)器作為根的目錄(不同于以磁盤為根的物理目錄)。默認(rèn)安裝時(shí),IIS服務(wù)器被安裝在“[硬盤名]:\Inetpub\wwwroot”下,該目錄對應(yīng)的URL(統(tǒng)一資源定位符)是http://localhost或者h(yuǎn)ttp://服務(wù)器域名。1.虛擬目錄(1)直接將網(wǎng)站的根目錄放在虛擬目錄下面。(2)將應(yīng)用程序目錄放到一個(gè)物理目錄下(例如D:\site),同時(shí)用一個(gè)虛擬目錄指向該物理目錄。此時(shí)客戶只需要通過虛擬目錄的URL來訪問??蛻舨⒉恍枰缹?yīng)的物理目錄在哪里。2.網(wǎng)頁文件 網(wǎng)頁(或稱窗體頁)是應(yīng)用程序運(yùn)行的主體。在ASP.NET中的基本網(wǎng)頁是以.aspx作為后綴的網(wǎng)頁。除此之外,應(yīng)用程序中還可以包括以.htm或.asp為后綴的網(wǎng)頁(或其他類型的文件)。2.網(wǎng)頁文件 當(dāng)服務(wù)器打開后綴為.htm的網(wǎng)頁時(shí),服務(wù)器將不經(jīng)過任何處理就直接送往瀏覽器,由瀏覽器下載并解釋執(zhí)行

而打開后綴為.aspx的網(wǎng)頁時(shí),則需先創(chuàng)建服務(wù)器控件,運(yùn)行服務(wù)器端的代碼,然后再將結(jié)果轉(zhuǎn)換成HTML的代碼形式送往瀏覽器。2.網(wǎng)頁文件

不是每次都要在服務(wù)器端重新解讀和運(yùn)行,對于那些曾經(jīng)請求過而又沒有改變的ASPX網(wǎng)頁,服務(wù)器會(huì)直接從緩沖區(qū)中取出結(jié)果而不需要再次運(yùn)行。3.網(wǎng)站配置文件(1)Web.config配置文件的作用

Web.config是一個(gè)基于XML的配置文件,因此人和機(jī)器都能夠識別。該文件的作用是對應(yīng)用程序進(jìn)行配置,例如規(guī)定客戶的認(rèn)證方法、基于角色的安全技術(shù)的策略、數(shù)據(jù)綁定的方法、遠(yuǎn)程處理對象等。<?xmlversion="1.0"encoding="utf-8"?><configuration><system.web><elementName1><childElementName1

attributeName1=valueattributeNameN=value/></elementName1>

<elementName2

attributeName1=valueattributeNameN=value/>…<elementNameNattributeName1=valueattributeNameN=value/></System.Web></configuration>4.網(wǎng)站全局文件

Global.asax文件(又稱為ASP.NET應(yīng)用程序文件)是一個(gè)可選的文件,一個(gè)應(yīng)用程序最多只能建立一個(gè)Global.asax文件,而且必須放在應(yīng)用程序的根目錄下。5.共享目錄(1)App_Code目錄 App_Code是一個(gè)共享的目錄。如果將某種文件(例如類文件)放在本目錄下時(shí),該文件就會(huì)自動(dòng)成為應(yīng)用程序中各個(gè)網(wǎng)頁的共享文件。5.共享目錄(2)App_Data目錄 如果將數(shù)據(jù)庫放在App_Data目錄下時(shí),這些數(shù)據(jù)庫將自動(dòng)成為網(wǎng)站中各網(wǎng)頁共享的資源。5.共享目錄(3)App_Themes目錄 App_Themes是一個(gè)用于放置主題的目錄,在主題目錄中將放入皮膚文件、樣式文件和相關(guān)的圖像文件,用來確定網(wǎng)站中各網(wǎng)頁的顯示風(fēng)格。5.1.3ASP.NET頁面在WebForm中所有的控件都被看成是對象,每個(gè)對象都有自己的屬性、方法和事件數(shù)據(jù)類型也看成對象,每種數(shù)據(jù)類型都有自己特有的屬性和方法。WEBFORM的后綴名是ASPX。當(dāng)一個(gè)瀏覽器第一次請求一個(gè)ASPX文件時(shí),WEBFORM頁面將被CLR(CommonLanguageRuntime)編譯器編譯。此后,當(dāng)再有用戶訪問此頁面的時(shí)候,由于ASPX頁面已經(jīng)被編譯過5.1.3ASP.NET頁面HTML文件都保存為ASPX文件后綴,這樣可以加快頁面的訪問效率!為了簡化程序員的工作,ASPX頁面不需要手工編譯,而是在頁面被調(diào)用的時(shí)候,由CLR自行決定是否編譯。一般來說,下面兩種情況下,ASPX會(huì)被重新編譯:

ASPX頁面第一次被瀏覽器請求;

ASPX被改寫.5.1.3ASP.NET頁面下面來看一個(gè)ASP.NET的頁面,通過這個(gè)頁面首先讓讀者對于ASP.NET頁面有一個(gè)初步的認(rèn)識和了解。其源代碼如下:

5.1.3ASP.NET頁面

<HTML><HEAD> <scriptLanguage="c#"runat="server">

privatevoidPage_Load(objectsender,System.EventArgse)

{

lbdisp.Text="改變文字,請單擊按鈕";

} privatevoidTextButton_Click(objectsender,System.EventArgse)

{

lbdisp.Text="測試成功"; } </script></HEAD><body> <formid="Form1"method="post"runat="server"> <asp:Labelid="lbdisp"runat="server"Width="140px">Label</asp:Label><asp:Buttonid="TextButton"runat="server"Width="176px"Text="測試按鈕"onclick="TextButton_Click"></asp:Button> </form></body></HTML>1.Web窗體頁處理.和所有的服務(wù)器端進(jìn)程一樣,當(dāng)ASPX頁面被客戶端請求時(shí),頁面的服務(wù)器端代碼被執(zhí)行,執(zhí)行結(jié)果被送回到瀏覽器端。Web處理的某些特性應(yīng)用到Web窗體頁。5.1.4ASP.NET頁面處理過程Web窗體頁中工作的劃分。瀏覽器向用戶展示一個(gè)窗體,用戶與該窗體進(jìn)行交互,這導(dǎo)致該窗體回發(fā)到服務(wù)器將該窗體發(fā)送到服務(wù)器、進(jìn)行處理、然后返回到瀏覽器。這一事件序列稱作“往返處理”。(1)頁面的往返處理.1.用戶輸入完畢訂單所有項(xiàng)目并點(diǎn)擊“提交”按鈕2.將該頁發(fā)送給服務(wù)器。3.服務(wù)器進(jìn)程檢查該訂單,執(zhí)行庫存查找,可能執(zhí)行在業(yè)務(wù)邏輯中定義的某些操作,這時(shí)可能發(fā)現(xiàn)一些錯(cuò)誤,這時(shí)服務(wù)器端進(jìn)程修改用戶提交頁以指示一個(gè)錯(cuò)誤,然后將該頁返回到用戶的瀏覽器以繼續(xù)。

(1)頁面的往返處理(舉例說明)Web窗體處理中的各個(gè)階段1.ASP.NET頁框架初始化引發(fā)該頁的Page_Init事件,并還原該頁和控件視圖狀態(tài)。ASP.NET頁框架還原控件屬性和回發(fā)數(shù)據(jù)。Web窗體處理中的各個(gè)階段2.用戶代碼初始化引發(fā)頁的Page_Load事件。讀取和還原以前存儲(chǔ)的值:使用Page.IsPostBack屬性,檢查是否是第一次處理該頁。如果是第一次處理該頁,則執(zhí)行初始數(shù)據(jù)綁定。否則,還原控件值。讀取和更新控件屬性。。Web窗體處理中的各個(gè)階段3.驗(yàn)證調(diào)用任何驗(yàn)證程序Web服務(wù)器控件的Validate方法來執(zhí)行該控件的指定驗(yàn)證。

Web窗體處理中的各個(gè)階段

4.事件處理如果已調(diào)用該頁來響應(yīng)窗體事件,則在此階段期間調(diào)用該頁中的相應(yīng)事件處理程序。Web窗體處理中的各個(gè)階段執(zhí)行特定于應(yīng)用程序的處理:處理所引發(fā)的特定事件。如果該頁包含ASP.NET服務(wù)器控件驗(yàn)證類型,則檢查該頁和各個(gè)驗(yàn)證控件的IsValid屬性。

手動(dòng)保存用戶正自行維護(hù)的頁變量的狀態(tài)。檢查該頁或各個(gè)驗(yàn)證控件的IsValid屬性。手動(dòng)保存動(dòng)態(tài)添加到該頁的控件的狀態(tài)。Web窗體處理中的各個(gè)階段5.清除調(diào)用Page_Unload事件,因?yàn)樵擁撘淹瓿沙尸F(xiàn)并準(zhǔn)備好被放棄。執(zhí)行最后的清除工作:關(guān)閉文件、關(guān)閉數(shù)據(jù)庫連接、放棄對象。當(dāng)ASP.NET頁被打開或重建時(shí),會(huì)引發(fā)Page_Load事件。Page_Load事件主要用于用戶代碼初始化、讀取和還原以前存儲(chǔ)的值,并能使用Page.IsPostBack屬性檢查是否是第一次處理該頁。如果是第一次處理該頁,則可執(zhí)行初始數(shù)據(jù)綁定;否則,還原控件值,讀取和更新控件屬性。

2.Page_Load事件.<scriptLanguage="C#"runat="server"> privatevoidPage_Load(objectsender,System.EventArgse){ lbdisp.Text="改變文字,請單擊按鈕"; }</script><HTML><HEAD><scriptLanguage="c#"runat="server">privatevoidPage_Load(objectsender,System.EventArgse){

if(!Page.IsPostBack){lbdisp.Text="ASP.NET頁面第一次打開所顯示的文字";}else{lbdisp.Text="今后所顯示的文字";}}</script></HEAD><body> <formid="Form1"method="post"runat="server"> <asp:Labelid="lbdisp"runat="server"Width="167px"></asp:Label> <asp:Buttonid="btsubmit"runat="server"Text="Button"Width="134px"></asp:Button> </form></body></HTML>

Web服務(wù)器控件:這些控件比HTML服務(wù)器控件具有更多內(nèi)置功能。Web服務(wù)器控件與HTML服務(wù)器控件相比更為抽象,因?yàn)槠鋵ο竽P筒灰欢ǚ从矵TML語法。

5.1.5服務(wù)器控件種類驗(yàn)證控件:包含邏輯以允許測試用戶輸入的控件。將一個(gè)驗(yàn)證控件附加到輸入控件,測試用戶對該輸入控件輸入的內(nèi)容。驗(yàn)證控件可用于檢查必填字段,對照字符的特定值或模式進(jìn)行測試,驗(yàn)證某個(gè)值是否在限定范圍之內(nèi)以及其他目的。

5.1.5服務(wù)器控件種類用戶控件:作為Web窗體頁創(chuàng)建的控件。Web窗體用戶控件可以嵌入到其他Web窗體頁中,這是創(chuàng)建菜單、工具欄和其他可重用元素的捷徑。5.1.5服務(wù)器控件種類5.2Web常用服務(wù)器控件5.2.1文本類控件1.標(biāo)簽控件Label 用來在Web頁面上顯示文字,用戶不能直接對這些文本進(jìn)行編輯。5.2.1文本類控件標(biāo)簽控件的使用語法如下:<ASP:Label id="控件的惟一標(biāo)識" Runat="Server" Text="所要顯示的文字"/>或<ASP:Labelid="控件的惟一標(biāo)識"Runat="Server"> 所要顯示的文字</ASP:Label>表5-5TextBox控件的屬性說明<html>

<head></head>

<body>

<formrunat="server">

這是一般文本框:

<asp:TextBoxId="T1"Runat="Server"/><br>

這是密碼文本框:

<asp:TextBoxId="T2"TextMode="Password"Runat="Server"/><br>

這是多行文本框:

<asp:TextBoxId="T3"TextMode="Multiline"Rows="3"Runat="Server"/>

</form>

</body></html><HTML><HEAD><title>例5-2</title> <scriptLanguage="c#"runat="server">

privatevoidPage_Load(objectsender,System.EventArgse){ lbdisp.Text="初始化文字"; } privatevoidT1_Changed(objectsender,System.EventArgse){ lbdisp.Text="Onchange事件被觸發(fā)。"; } </script></HEAD><body> <formid="Form1"method="post"runat="server">

<ASP:TextboxId="T1"AutoPostBack="True"OnTextChanged="T1_Changed"Runat="server"/> <ASP:LabelId="lbdisp"Runat="Server"/> </form></body></HTML>1.Button控件

Button按鈕控件可以分為提交按鈕控件和命令按鈕控件。

提交按鈕控件只是將web頁面回送到服務(wù)器,默認(rèn)情況下,Button控件為提交按鈕控件;

而命令按鈕控件一般包含與控件相關(guān)聯(lián)的命令,用于處理控件命令事件。5.2.2按鈕類控件<ASP:Button Id="被程序代碼所控制的名稱" Runat="Server" Text="按鈕上的文字" CssClass="控件呈現(xiàn)的樣式文件名" CausesValidation="true|false" OnClick="事件程序名" PostBackUrl="發(fā)送到下頁的URL"/>1.Button控件

voidButton1_Click(objectsender,EventArgse) { Label1.Text="謝謝您訪問我們的站點(diǎn)!"; } <asp:buttonid="Button1" usesubmitbehavior="true" text="打開新Web頁" onclientclick="Navigate()" runat="server"onclick="Button1_Click"/>

functionNavigate()

{

javascript:window.open("http://www.

/");//打開一個(gè)網(wǎng)頁 }<h3>Button.PostBackUrl示例</h3>輸入一些需要傳遞到另一頁的字符:<asp:textboxid="TextBox1"runat="server"></asp:textbox><asp:buttonid="Button1"text="指向本頁"runat="Server"></asp:button><asp:buttonid="Button2"text="轉(zhuǎn)向另一頁"

postbackurl="targetpage.aspx"runat="Server"></asp:button> (3)PostBackUrl屬性<scriptrunat="server">voidPage_Load(objectsender,System.EventArgse){

stringtext;text=((TextBox)PreviousPage.FindControl("TextBox1")).Text; if(text!="")

PostedLabel.Text="前一頁傳送來的文本是:"+text+".";else

PostedLabel.Text="前一頁傳送的是空文本";}</script><formid="Form1"runat="server"><h3>Button.PostBackUrl目標(biāo)頁示例</h3><br/><asp:labelid="PostedLabel"runat="server"></asp:label></form>確定用戶單擊位置ImageButton控件所呈現(xiàn)圖片的坐標(biāo),方法如下:(1)為ImageButton控件的Click事件創(chuàng)建一個(gè)事件處理程序。在該方法中,事件參數(shù)對象的類型必須是ImageClickEventArgs。(2)在Click事件處理程序中,獲取ImageClickEventArgs參數(shù)對象的X和Y屬性。其中x坐標(biāo)和y坐標(biāo)用像素表示,圖像左上角的坐標(biāo)是(0,0)。。2.ImageButton控件protectedvoidImageButton1_Click(objectsender,ImageClickEventArgse){stringmsg="";intx=e.X;inty=e.Y;if(x>=50&&y>=50){msg="Southeast";}elseif(x>=50&&y<50){msg="Northeast";}elseif(x<50&&y>=50){msg="Southwest";}elseif(x<50&&y<50){msg="Northwest";}Label1.Text=msg; }</script><asp:ImageButtonID="ImageButton1"runat="server"ImageUrl="~/imagebutton/image/DSCN2769.jpg"onclick="ImageButton1_Click"style="width:100px;height:100px"/>1.復(fù)選框列表控件CheckBoxList5.2.3選擇類控件<ASP:CheckBoxList

Id="被程序代碼所控制的名稱"Runat="Server"

AutoPostBack="True|False"CellPadding="像素"

DataSource="<%數(shù)據(jù)源%>"DataTextField="數(shù)據(jù)源的字段"DataValueField="數(shù)據(jù)源的字段"RepeatColumns="字段數(shù)量"

RepeatDirection="Vertical|Horizontal"RepeatLayout="Flow|Table"

TextAlign="Right|Left"OnSelectedIndexChanged="事件程序名稱"><ASP:ListItemtext="顯示文字"value="值"selected="True|False"/></ASP:CheckBoxList>表5-6CheckBoxList控件的常用屬性表5-6CheckBoxList控件的常用屬性

privatevoidbtnA_Click(objectsender,System.EventArgse){ intshtI; lblA.Text="您選擇了:"; for(shtI=0;shtI<cblA.Items.Count;shtI++){ if(cblA.Items[shtI].Selected==true){ lblA.Text+=cblA.Items[shtI].Value+"、"; } } lblA.Text=lblA.Text.Remove(lblA.Text.Length-1,1)}<h3>CheckBoxList示例</h3> 請選擇您感趣的五大足球聯(lián)賽:<br> <ASP:CheckBoxListId="cblA"Runat="Server"> <ASP:ListItemvalue="英超">英國超級聯(lián)賽</ASP:ListItem> <ASP:ListItemvalue="法甲">法國甲級聯(lián)賽</ASP:ListItem> <ASP:ListItemvalue="德甲">德國甲級聯(lián)賽</ASP:ListItem> <ASP:ListItemvalue="意甲">意大利甲級聯(lián)賽</ASP:ListItem> <ASP:ListItemvalue="西甲">西班牙甲級聯(lián)賽</ASP:ListItem> </ASP:CheckBoxList> <ASP:ButtonId="btnA"Text="確定"OnClick="btnA_Click"Runat="Server"/><ASP:RadioButtonList

Id="被程序代碼所控制的名稱" Runat="Server"

AutoPostBack="True|False" CellPadding="像素"

DataSource="<%數(shù)據(jù)源%>" DataTextField="數(shù)據(jù)源的字段" DataValueField="數(shù)據(jù)源的字段" RepeatColumns="字段數(shù)量"

RepeatDirection="Vertical|Horizontal"

RepeatLayout="Flow|Table" TextAlign="Right|Left" OnSelectedIndexChanged="事件程序名稱">

<ASP:ListItemtext="顯示文字"value="值"selected="True|False"/></ASP:RadioButtonList>2.單選列表控件RadioButtonListprivatevoidButton1_Click(objectsender,System.EventArgse){ Label1.Text="您的最高學(xué)歷是:"+rblA.SelectedItem.Text+"學(xué)位,您是一名" +rblA.SelectedItem.Value;}請選擇您的最高學(xué)歷:<br><ASP:RadioButtonListId="rblA"Runat="Server"><ASP:ListItemText="學(xué)士"Selected="True"Value="本科生"/><ASP:ListItemText="碩士"Value="研究生"/><ASP:ListItemText="博士"Value="博士生"/></ASP:RadioButtonList><ASP:ButtonId="Button1"Text="提交"OnClick="Button1_Click"Runat="Server"/><P><ASP:LabelId="Label1"Runat="Server"/>3.下拉列表框控件DropDownList<ASP:DropDownList

Id="被程序代碼所控制的名稱" Runat="Server"

AutoPostBack="True|False" DataSource="<%數(shù)據(jù)源%>" DataTextField="數(shù)據(jù)源的字段" DataValueField="數(shù)據(jù)源的字段" OnSelectedIndexChanged="事件程序名稱">

<ASP:ListItemtext="顯示文字"value="值"selected="True|False"/></ASP:DropDownList>privatevoidButton1_Click(objectsender,System.EventArgse){ Label1.Text="您所在的城市:"+

DropDown1.SelectedItem.Text +",該城市的拼音縮寫為:"+DropDown1.SelectedItem.Value; }請選擇您所在的城市:<asp:DropDownListid=DropDown1runat="server"><asp:ListItemvalue="bj">北京</asp:ListItem><asp:ListItemvalue="sh">上海</asp:ListItem><asp:ListItemvalue="gz">廣州</asp:ListItem><asp:ListItemvalue="wh"selected=true>武漢</asp:ListItem><asp:ListItemvalue="dl">大連</asp:ListItem><asp:ListItemvalue="cq">重慶</asp:ListItem></asp:DropDownList><asp:buttontext="提交"OnClick="list_Click"runat=server/><p>

<asp:Labelid=Label1font-name="Verdana"font-size="10pt"runat="server"></asp:Label>5.2.4鏈接控件

<ASP:Hyperlink Id="控件Id" Runat="Server" Text="超級鏈接文字或提示文字" ImageUrl="圖片所在地址" Target="超級鏈接所要顯示的窗口" NavigateUrl=”所要打開的Web頁的路徑”/>表5-7Target屬性的特殊值<h3>HyperLink控件示例</h3> 單擊下圖可轉(zhuǎn)到微軟網(wǎng)站<br><asp:HyperLinkid="hyperlink1" ImageUrl="winxp.gif" NavigateUrl="" Text="Microsoft站點(diǎn)" Target="_new" runat="server"/>5.3驗(yàn)證控件5.3.1概述.5.3.2RequiredFieldValidator控件5.3.3CompareValdator控件5.3.4RangeValidator控件

5.3.5RegularExpressionValidator控件5.3.6CustomValidator控件5.3.7ValidationSummary控件5.3.1概述數(shù)據(jù)驗(yàn)證是一種限制使用者輸入的限制,可以確定使用者所輸入的數(shù)據(jù)是正確的.也可強(qiáng)迫使用者按照某一種格式輸入數(shù)據(jù)。

在微軟的.NET框架出來之前,采用的驗(yàn)證方法有兩種:在客戶端驗(yàn)證。在Web服務(wù)器端進(jìn)行驗(yàn)證。5.3.1概述5.3.2RequiredFieldValidator控件通過在Web表單頁中添加RequiredFieldValidator控件并將其鏈接到必需輸入信息的控件,可以指定某個(gè)用戶在特定控件中必須提供信息。其使用語法為:<ASP:RequireFieldValidatorId="被程序代碼所控制的名稱"Runat="Server"ControlToValidate="要驗(yàn)證的控件名稱"ErrorMessage="所要顯示的錯(cuò)誤信息"Text="未輸入數(shù)據(jù)時(shí)所顯示的信息"/><html><head> <ScriptLanguage="c#"Runat="Server">privatevoidButton1_Click(objectsender,System.EventArgse){ if(Page.IsValid==true)lblMsg.Text="驗(yàn)證成功!"; }</Script></head><body><formrunat="server">用戶名:<asp:TextBoxid="Text1"Text="請輸入您的用戶名!" runat="server"/><asp:RequiredFieldValidatorid="RequiredFieldValidator1"

ControlToValidate="Text1"Text="必填字段!"runat="server"/><asp:Buttonid="Button1"runat="server"Text="提交"

OnClick="btnOK_Click"/>

<ASP:LabelId="lblMsg"Runat="Server"/></form></body></html>5.3.3CompareValdator控件

將輸入控件的值同常數(shù)值或其他輸入控件的值相比較,以確定這兩個(gè)值是否與由比較運(yùn)算符(小于、等于、大于等等)指定的關(guān)系相匹配。如果比較的結(jié)果為false,則會(huì)產(chǎn)生驗(yàn)證錯(cuò)誤。其使用語法為:<ASP:CompareValidator

Id="被程序代碼所控制的名稱"Runat="Server“

ControlToValidate="要驗(yàn)證的控件名稱"Operator="DataTypeCheck|Equal|NotEqual|GreaterThan|GreaterThanEqual|LessThan|LessThanEqual"Type="要檢查的數(shù)據(jù)類型"ControlToCompare=“要比較的控件名稱”|ValueToCompare=“要 比較的值"ErrorMessage=“所要顯示的錯(cuò)誤信息”GreaterThanEqual|LessThan|LessThanEqual"Type="要檢查的數(shù)據(jù)類型"ControlToCompare="要比較的控件名稱"|ValueToCompare="要比較的值"ErrorMessage="所要顯示的錯(cuò)誤信息"Text=“未通過驗(yàn)證時(shí)所顯示的訊息”/>表5-8驗(yàn)證控件所使用的數(shù)據(jù)類型表5-9Operator屬性值下面分成三個(gè)例子來介紹CompareValidator控件的使用方法:(1)驗(yàn)證兩個(gè)輸入框所輸入的值相同。(2)驗(yàn)證輸入框所輸入的數(shù)值要小于一個(gè)固定值(如120)。(3)驗(yàn)證輸入框所輸入的內(nèi)容是數(shù)型數(shù)。1.驗(yàn)證兩個(gè)輸入框所輸入的值相同這種驗(yàn)證一般用在用戶注冊的Web頁面中,如密碼輸入的內(nèi)容與確認(rèn)密碼輸入的內(nèi)容要求相同。其源代碼如下所示:privatevoidButton1_Click(objectsender,System.EventArgse){

if(Page.IsValid==true)lblMsg.Text="驗(yàn)證成功!";}</Script></head>密碼: <asp:TextBoxid="TextBox1"runat="server"textmode=password></asp:TextBox><asp:RequiredFieldValidatorid="RequiredFieldValidator1"

ControlToValidate="TextBox1"

Text="必填字段!"runat="server"/><br>確認(rèn)密碼:<asp:TextBoxid="TextBox2"runat="server"textmode=password></asp:TextBox><asp:RequiredFieldValidatorid="RequiredFieldValidator2"ControlToValidate="TextBox2"

Text="必填字段!"runat="server"/><br><asp:CompareValidatorid="CompareValidator1"runat="server"ErrorMessage="密碼與確認(rèn)密碼必須相同"ControlToCompare="TextBox1"ControlToValidate="TextBox2"></asp:CompareValidator><br><p>

2.驗(yàn)證輸入框所輸入的數(shù)值要小于一個(gè)固定值

這種驗(yàn)證一般用在用戶注冊的Web頁面中,如要求用戶輸入年齡,則這個(gè)值一般應(yīng)小于120。其源代碼如下:privatevoidButton1_Click(objectsender,System.EventArgse){ if(Page.IsValid)lblMsg.Text="驗(yàn)證成功!"; }年齡:<asp:TextBoxid="TextBox1"runat="server"></asp:TextBox>

<asp:RequiredFieldValidatorid="RequiredFieldValidator1"ControlToValidate="TextBox1"

Text="必填字段!" runat="server"/><br><ASP:CompareValidatorId="Validor1"Runat="Server"ControlToValidate="TextBox1"

ValueToCompare="120"Operator="LessThan"

Type="Integer"Text="年齡必須小于120歲"/><br><p>

<asp:Buttonid="Button1"runat="server"Text="提交"OnClick="btnOK_Click"/><ASP:LabelId="lblMsg"Runat="Server"/>

3.驗(yàn)證輸入框所輸入的內(nèi)容是某一類型數(shù)據(jù)這種驗(yàn)證一般用在用戶注冊的Web頁面中,如要求用戶輸入年齡必須為數(shù)字類型。其源代碼如下:privatevoidButton1_Click(objectsender,System.EventArgse){ if(Page.IsValid)lblMsg.Text="驗(yàn)證成功!";}年齡:<asp:TextBoxid="TextBox1"runat="server"></asp:TextBox><asp:RequiredFieldValidatorid="RequiredFieldValidator1"ControlToValidate="TextBox1" Text="必填字段!"runat="server"/><br><ASP:CompareValidatorId="Validor1"Runat="Server"ControlToValidate="TextBox1"Operator="DataTypeCheck"

Type="Integer"Text="年齡必須是整數(shù)類型"/><br><p><asp:Buttonid="Button1"runat="server"Text="提交"OnClick="btnOK_Click"/><ASP:LabelId="lblMsg"Runat="Server"/>

5.3.4RangeValidator控件

RangeValidator控件可以檢查用戶的輸入是否在指定的上限與下限之間。其使用語法為:

<ASP:RangeValidatorId=“被程序代碼所控制的名稱”Runat="Server"ControlToValidate="要驗(yàn)證的控件名稱"MinimumValue=“最小值”MaximumValue="最大值"MinimumControl="限制最小值的控件名稱"MaximumControl="限制最大值的控件名稱"Type=“數(shù)據(jù)”ErrorMessage="所要顯示的錯(cuò)誤信息“Text="未通過驗(yàn)證時(shí)所顯示的信息"/>年齡:<asp:TextBoxid="TextBox1"runat="server"></asp:TextBox><asp:RequiredFieldValidatorid="RequiredFieldValidator1" ControlToValidate="TextBox1"Text="必填字段!" runat="server"/><br><ASP:RangeValidatorId="Validor1"Runat="Server"ControlToValidate="TextBox1"MaximumValue="65"

MinimumValue="18"Type="Integer"Text="在冊人員的年齡只可能在18至65之間"/><br><p><asp:Buttonid="Button1"runat="server"Text="提交"OnClick="btnOK_Click"/><ASP:LabelId="lblMsg"Runat="Server"/>

5.3.5RegularExpressionValidator控件

RegularExpressionValidator控件用于確定用戶在某一輸入控件中所輸入的值是否與某個(gè)規(guī)則表達(dá)式所定義的模式相匹配。聲明一個(gè)RegularExpressionValidator控件所使用語法為:<ASP:RegularExpressionValidatorId=“被程序代碼所控制的名稱”Runat="Server"ControlToValidate="要驗(yàn)證的控件名稱"ValidationExpression="驗(yàn)證規(guī)則"ErrorMessage="所要顯示的錯(cuò)誤信息"Text="未通過驗(yàn)證時(shí)所顯示的訊息"/>強(qiáng)調(diào)說明:如果用戶在輸入控件沒有輸入任何值(即該輸入控件為空),則不調(diào)用任何驗(yàn)證函數(shù)并且驗(yàn)證成功。這樣必須使用RequiredFieldValidator控件防止用戶跳過某個(gè)輸入控件。另外,RegularExpressionValidator控件中的ValidationExpression屬性用于指定規(guī)則表達(dá)式,這個(gè)表達(dá)式被當(dāng)成一個(gè)字符串進(jìn)行處理。下面來詳細(xì)介紹規(guī)則表達(dá)式的用法以及幾個(gè)符號的特殊意義:括號“[]”:用于定義控件可接受的字符。例如:

[a-zA-Z]表示只接受a到z或是A到Z的英文字符。其中的短橫線表示一個(gè)范圍。

[x-zX-Z]表示只接收小寫的x-z或大寫的X-Z。

[win]

表示只接收w、i、n的英文字母。如果必須輸入某個(gè)字符,則要把文字符放在方括號外。例如,測試郵件地址表達(dá)式為:

[a-zA-Z0-9]@[a-zA-Z0-9]表示符號@必須在輸入字符串內(nèi),它的前后則可以是任何字母或數(shù)字。

反集合符號“^”:用于定義控件不可接受的字符。例如:

[^linux]表示除了l、i、n、u、x之外的英文字母都接收?!癪”表示除…之外?;ɡㄌ枴埃保河糜诙x必須輸入的字符數(shù)量。例如:

[a-zA-Z]{4} 表示只接收4個(gè)字符。

[0,9]{4} 表示必須輸入4個(gè)數(shù)字。

[a-zA-Z]{3,10}表示輸入的字符數(shù)量必須在3到10個(gè)之間。

[a-zA-Z]{4,} 表示最少接受4個(gè)字符,最多不限制。小圓點(diǎn)“.”:符號可以用來表示接收除了空白外的任意字符,例如:

.{4,8} 表示可以接受4到8個(gè)任意字符。豎線“|”:表示“或”的邏輯符號。如果想要限制使用者的輸入,只要符合兩個(gè)規(guī)則的其中一個(gè)即接受,就可以使用該符號。例如使用者只要輸入全部四個(gè)數(shù)值或是全部四個(gè)字母都接受的話,驗(yàn)證規(guī)則可以寫成[a-zA-Z]{4}|[0-9]{4};表示四個(gè)所輸入的數(shù)據(jù)如果不是全部都數(shù)值或是全部都英文字符則不正確。和把驗(yàn)證規(guī)則設(shè)定成[a-zA-Z0-9]{4}的結(jié)果和不一樣,這樣表示任何四個(gè)混雜四個(gè)大小寫字符或數(shù)值的數(shù)據(jù)都接受。加號“+”:表示最少1個(gè)符合,最多到無限多個(gè)字符。例如:

[a-zA-Z]+表示不限制數(shù)目,接受a-z或A-Z的字符,但是至少輸入一個(gè)字符。斜線“\”:也稱作轉(zhuǎn)義字符近。用于輸出規(guī)則表達(dá)式中的特殊字符。即前面介紹一些有特定意義的符號,如果所要執(zhí)行驗(yàn)證的字符如果包含這些符號,為了避奐二義性,在這些符號之前必須加上該符號。下面舉一個(gè)綜合例子。要對用戶所輸入的電話號碼進(jìn)行驗(yàn)證,輸入格式必須為(區(qū)號)電話號碼或者區(qū)號-電話號碼或者直接是11位手機(jī)號碼,如(027)12345678或其中,區(qū)號必須為3到5位,電話號碼為5到10位,則其規(guī)則表達(dá)式為:\(\d{3}\)\d{5,9}|\d{3}-\d{5,9}|\d{11}。其源代碼如下:<html><head> <title>RegularExpressionValidator控件</title><ScriptLanguage="c#"Runat="Server">privatevoidButton1_Click(objectsender,System.EventArgse){ if(Page.IsValid==true)lblMsg.Text="驗(yàn)證成功!"; }</Script></head><body><h3>RegularExpressionValidator控件示例</h3><formrunat="server"> 電話號碼:<asp:TextBoxid="TextBox1"runat="server"></asp:TextBox><asp:RequiredFieldValidatorid="RequiredFieldValidator1" ControlToValidate="TextBox1" Text="必填字段!" runat="server"/><br><asp:RegularExpressionValidatorid="RegularExpressionValidator1"ControlToValidate="TextBox1"ValidationExpression="\(\d{3}\)\d{5,9}|\d{3}-\d{5,9}|\d{11}"ErrorMessage="電話號碼的格式為:(027)123456789或EnableClientScript="False

溫馨提示

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

評論

0/150

提交評論