![C#-開發(fā)Web應(yīng)用程序_第1頁](http://file4.renrendoc.com/view8/M01/2E/26/wKhkGWcnWiOABhkYAADPcqVW1-Q148.jpg)
![C#-開發(fā)Web應(yīng)用程序_第2頁](http://file4.renrendoc.com/view8/M01/2E/26/wKhkGWcnWiOABhkYAADPcqVW1-Q1482.jpg)
![C#-開發(fā)Web應(yīng)用程序_第3頁](http://file4.renrendoc.com/view8/M01/2E/26/wKhkGWcnWiOABhkYAADPcqVW1-Q1483.jpg)
![C#-開發(fā)Web應(yīng)用程序_第4頁](http://file4.renrendoc.com/view8/M01/2E/26/wKhkGWcnWiOABhkYAADPcqVW1-Q1484.jpg)
![C#-開發(fā)Web應(yīng)用程序_第5頁](http://file4.renrendoc.com/view8/M01/2E/26/wKhkGWcnWiOABhkYAADPcqVW1-Q1485.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
開發(fā)Web應(yīng)用程序
中國地質(zhì)大學(xué)(武漢)楊之江
yangzhijiang@內(nèi)容ASP.NET的開發(fā)環(huán)境配置編寫ASP.NETWeb應(yīng)用程序ASP.NET服務(wù)器端控件創(chuàng)建Web服務(wù)Q&A1ASP.NET的開發(fā)環(huán)境配置
首先并不是所有的Windows系統(tǒng)都可作為ASP.NET的開發(fā)平臺(tái),Windows98系統(tǒng)系列就不支持ASP.NET其次為了能夠創(chuàng)建ASP.NETWeb應(yīng)用程序,系統(tǒng)要安裝微軟的Internet信息服務(wù)器(IIS),如果使用的系統(tǒng)是Windows2000或WindowsXP系列,那它們直接就帶有IIS,可以通過【控制面板】中的添加/刪除程序來安裝2編寫ASP.NETWeb應(yīng)用程序
VisualStudio.NET是一個(gè)功能十分強(qiáng)大的開發(fā)工具,我們先來使用它創(chuàng)建一個(gè)簡單的Web應(yīng)用程序,然后逐步對(duì)這個(gè)程序進(jìn)行講解。【例】打開VisualStudio.NET,選擇【文件】|【新建】|【項(xiàng)目】命令。從【模板】欄內(nèi)選擇【ASP.NETWeb應(yīng)用程序】。如果是第一次創(chuàng)建,Web應(yīng)用程序的名稱將是WebApplication1,接受默認(rèn)值,單擊【確定】按鈕。這時(shí)將出現(xiàn)WebForm1.aspx的設(shè)計(jì)界面,現(xiàn)在可以向其中添加控件形成一個(gè)完整的Web窗體。2.1ASP.NET的基本語法基本文件名種類:.asax文件:ASP.NET的系統(tǒng)環(huán)境設(shè)置文件。.aspx文件:內(nèi)含ASP程序代碼的文件,瀏覽器可執(zhí)行此類文件,向服務(wù)器提出瀏覽請(qǐng)求。.asmx文件:制作WebServices的源文件。.sdl文件:制作WebServices的XML格式的文件。.vb或.cs文件:在非ASP.NET環(huán)境下,執(zhí)行WebServices的文件。.aspc文件:可重復(fù)使用多個(gè).aspx文件,此文件內(nèi)可含有控件。.ascx文件:內(nèi)含UserControl的文件,可內(nèi)含在多個(gè).aspx文件中。2.1ASP.NET的基本語法聲明代碼的語法<scriptrunat=“server”language=“codelanguage”src=“pathname”>代碼</script>內(nèi)聯(lián)代碼段<%inlinecode%>或者<%inlineexpression%>ASP.NET服務(wù)器端控件語法ASP.NETHTML服務(wù)器端控件語法數(shù)據(jù)綁定語法Object標(biāo)記語法<objectrunat=“server”/>例如<objectid=“myobjectname”class=“myselectclass”runat=“server”/>注釋語法<%--comments--%>2.2CodeBehind技術(shù)aspx例子<%@Pagelanguage="c#"Codebehind="WebForm1.aspx.cs" AutoEventWireup="false"Inherits="XXXX.WebForm1"%><HTML> <HEAD> <title>WebForm1</title> <metaname="CODE_LANGUAGE"Content="C#"> <metaname="vs_defaultClientScript"content="JavaScript"> </HEAD> <bodyMS_POSITIONING="GridLayout"> <formid="Form1"method="post"runat="server"><FONTface="宋體"> <asp:TextBoxid="TextBox1"runat="server"Width="265px" Height="48px"></asp:TextBox> <asp:Buttonid="Button1"runat="server"Width="120px"Height="40px" Text="Button"></asp:Button> <asp:Labelid="Label1"runat="server"Width="376px" Height="80px">Label</asp:Label></FONT></form></body></HTML>2.2CodeBehind技術(shù)cs例子publicclassWebForm1:System.Web.UI.Page{ protectedSystem.Web.UI.WebControls.TextBoxTextBox1; protectedSystem.Web.UI.WebControls.ButtonButton1; protectedSystem.Web.UI.WebControls.LabelLabel1; privatevoidPage_Load(objectsender,System.EventArgse) { //在此處放置用戶代碼以初始化頁面 } privatevoidInitializeComponent() { this.Button1.Click+=newSystem.EventHandler(this.Button1_Click); this.Load+=newSystem.EventHandler(this.Page_Load); } privatevoidButton1_Click(objectsender,System.EventArgse) { inti=100; stringstr=Convert.ToString(i,2); Label1.Text=str; }}2.3Web窗體在Web窗體頁中,用戶界面編程分為兩個(gè)不同的部分:可視控件和邏輯。視覺元素稱作Web窗體“頁”(page)。這種頁由一個(gè)包含靜態(tài)HTML和/或ASP.NET服務(wù)器控件的文件組成。Web窗體頁用作要顯示的靜態(tài)文本和控件的容器。Web窗體頁的邏輯由代碼組成,開發(fā)者創(chuàng)建代碼與窗體進(jìn)行交互,編程邏輯位于與用戶界面文件不同的文件中,該文件稱作“代碼隱藏”文件,用aspx.cs”作為擴(kuò)展名,在代碼隱藏文件中編寫的邏輯使用C#來編寫。2.3Web窗體的事件響應(yīng)像在Windows窗體上使用控件一樣,Web控件和HTML控件也有與它們相關(guān)的事件,可以為這些事件生成代碼。每個(gè)控件都有它們自己的特殊事件,例如,按鈕控件有Click事件,文本框有TextChanged事件。Web窗體事件和Windows窗體事件有一個(gè)重要的區(qū)別:Windows窗體的事件是在本地機(jī)進(jìn)行處理的;與Web窗體事件相關(guān)的代碼被存儲(chǔ)在Web服務(wù)器上的的代碼文件中,這意味著當(dāng)運(yùn)行在用戶瀏覽器上的Web窗體中的事件被觸發(fā)時(shí),窗體不得不回叫Web服務(wù)器來處理它的事件。當(dāng)事件被觸發(fā)時(shí),Web窗體頁再次與Web服務(wù)器通信來處理這些代碼。因此,過多地使用控件事件會(huì)造成頻繁地訪問服務(wù)器。3ASP.NET服務(wù)器端控件3.1Web服務(wù)器控件
3.2HTML服務(wù)器控件
3.3驗(yàn)證控件
3.4用戶控件3ASP.NET服務(wù)器端控件服務(wù)器端控件是ASP.NET編程的基礎(chǔ),編寫Web頁面很大程度上就是將控件拼湊起來,以使其協(xié)同工作。Web窗體總共可以加入4種控件,它們是:Web服務(wù)器控件,HTML服務(wù)器控件,驗(yàn)證控件和用戶控件3.1Web服務(wù)器控件
VisualStudio.NET提供了眾多的Web服務(wù)器控件,這些控件都包含多種屬性,更改這些屬性可使控件具有不同的功能??丶膶傩约瓤梢栽赩isualStudio.NET的屬性對(duì)話框中進(jìn)行靜態(tài)更改,也可以在程序運(yùn)行時(shí)進(jìn)行動(dòng)態(tài)更改。3.1Web服務(wù)器控件-文本框控件
TextBox控件文本框控件提供了向Web窗體輸入信息的方法,可以將文本框的TextMode屬性賦為SingLine、MultiLine和Password來改變它的行為模式3.1Web服務(wù)器控件-文本框控件的公共屬性名稱描述Columns獲取或設(shè)置文本框的顯示寬度(以字符為單位)MaxLength獲取或設(shè)置文本框中最多允許的字符數(shù)ReadOnly獲取或設(shè)置一個(gè)值,用于指示能否更改TextBox控件的內(nèi)容Rows獲取或設(shè)置多行文本框的顯示高度Text獲取或設(shè)置文本框的文本內(nèi)容TextMode獲取或設(shè)置文本框的行為模式Wrap獲取或設(shè)置一個(gè)值,該值指示文本框內(nèi)的文本內(nèi)容是否換行3.1Web服務(wù)器控件-文本框控件的公共方法名稱描述AppendText向文本框的當(dāng)前文本追加文本Clear從文本框控件中清除所有文本ClearUndo從該文本框的撤消緩沖區(qū)中清除關(guān)于最近操作的信息Copy將文本框中的當(dāng)前選定內(nèi)容復(fù)制到剪貼板Cut將文本框中的當(dāng)前選定內(nèi)容移動(dòng)到剪貼板中Paste用剪貼板的內(nèi)容替換文本框中的當(dāng)前選定內(nèi)容Hide對(duì)用戶隱藏控件3.1Web服務(wù)器控件-按鈕控件VisualStudio.NET的工具箱中提供了3種按鈕控件:普通按鈕Button、顯示超鏈接樣式的按鈕LinkButton和顯示圖像樣式的ImageButton。按鈕控件發(fā)生Click事件時(shí)會(huì)直接導(dǎo)致向服務(wù)器端提交。3.1Web服務(wù)器控件-按鈕控件公共屬性名稱描述CausesValidation獲取或設(shè)置一個(gè)值,該值指示在單擊Button控件時(shí)是否執(zhí)行了驗(yàn)證Text獲取或設(shè)置在Button控件中顯示的文本標(biāo)題ToolTip獲取或設(shè)置當(dāng)鼠標(biāo)指針懸停在Web服務(wù)器控件上時(shí)顯示的文本Button和LinkButton控件的公共屬性名稱描述AlternateText獲取或設(shè)置當(dāng)圖像不可用時(shí),Image控件中顯示的替換文本。支持工具提示功能的瀏覽器將此文本顯示為工具提示ImageAlign獲取或設(shè)置控件相對(duì)于Web頁上其他元素的對(duì)齊方式ImageUrl獲取或設(shè)置在控件中顯示的圖像的位置ImageButton控件的公共屬性
3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件復(fù)選框控件(CheckBox、CheckBoxList)和單選按鈕控件(RadioButton、RadioButtonList)復(fù)選框控件和單選按鈕控件十分類似,它們都允許從多個(gè)選項(xiàng)中進(jìn)行選擇,不同的是復(fù)選框控件允許同時(shí)選擇多項(xiàng),而單選按鈕控件每次只能選擇一項(xiàng)。CheckBoxList控件和RadioButtonList控件可以單獨(dú)使用,而CheckBox控件和RadioButton控件則需要多個(gè)一起使用。它們都可以和數(shù)據(jù)源進(jìn)行綁定,不過比較起來使用CheckBoxList控件和RadioButtonList控件訪問數(shù)據(jù)更為方便一些3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件對(duì)CheckBoxList控件和RadioButtonList控件來說,可以直接通過Items屬性來設(shè)置顯示項(xiàng)和標(biāo)簽。打開這些控件屬性對(duì)話框中的Items項(xiàng),將出現(xiàn)ListItem集合編輯器可以在左側(cè)【成員】欄內(nèi)添加顯示項(xiàng),右邊的屬性欄可以設(shè)置該項(xiàng)的屬性。Selected屬性表明該項(xiàng)是否被選定,Text屬性的值將作為該項(xiàng)的顯示標(biāo)簽,Value的值可以作為編程時(shí)的內(nèi)部值使用,該值可與Text屬性采用不同的值3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件名稱描述Checked獲取或設(shè)置一個(gè)值,該值指示是否已選中控件Text獲取或設(shè)置與控件關(guān)聯(lián)的文本標(biāo)簽TextAlign獲取或設(shè)置與控件關(guān)聯(lián)的文本標(biāo)簽的對(duì)齊方式CheckBox和RadioButton控件的公共屬性3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件名稱描述CellPadding獲取或設(shè)置表單元格的邊框和內(nèi)容之間的距離(以像素為單位)CellSpacing獲取或設(shè)置單元格之間的距離(以像素為單位)DataMember獲取或設(shè)置要綁定到控件的DataSource中的特定表DataSource獲取或設(shè)置填充列表控件項(xiàng)的數(shù)據(jù)源DataTextField獲取或設(shè)置為列表項(xiàng)提供文本內(nèi)容的數(shù)據(jù)源字段DataTextFormatString獲取或設(shè)置格式化字符串,該字符串用來控制如何顯示綁定到列表控件的數(shù)據(jù)DataValueField獲取或設(shè)置為各列表項(xiàng)提供值的數(shù)據(jù)源字段Items獲取列表控件項(xiàng)的集合RepeatColumns獲取或設(shè)置要在控件中顯示的列數(shù)RepeatDirection獲取或設(shè)置一個(gè)值,該值指示控件是垂直顯示還是水平顯示RepeatLayout獲取或設(shè)置復(fù)選框的布局SelectedIndex獲取或設(shè)置列表中選定項(xiàng)的最低序號(hào)索引SelectedItem獲取列表控件中索引最小的選定項(xiàng)CheckBoxList和RadioButtonList控件的公共屬性
3.1Web服務(wù)器控件-DropDownList控件和ListBox控件DropDownList控件和ListBox控件都提供了選擇特定項(xiàng)的功能,不同處在于DropDownList控件提供一個(gè)下拉列表框進(jìn)行選擇,而ListBox控件直接提供多個(gè)選項(xiàng),而且還可同時(shí)選擇ListBox控件中的多項(xiàng)與復(fù)選框控件和單選按鈕相同,它們都可以通過屬性對(duì)話框的Items項(xiàng)打開ListItem集合編輯器對(duì)顯示項(xiàng)進(jìn)行添加刪除,它們也都具有數(shù)據(jù)源綁定功能3.1Web服務(wù)器控件-DropDownList控件和ListBox控件ListItem集合編輯器3.1Web服務(wù)器控件-DropDownList控件公共屬性名稱描述Items獲取列表控件項(xiàng)的集合SelectedIndex已重寫。獲取或設(shè)置DropDownList控件中的選定項(xiàng)的索引SelectedItem獲取列表控件中索引最小的選定項(xiàng)3.1Web服務(wù)器控件-ListBox控件公共屬性名稱描述Items獲取列表控件項(xiàng)的集合Rows獲取或設(shè)置ListBox控件中顯示的行數(shù)SelectedIndex獲取或設(shè)置列表中選定項(xiàng)的最低序號(hào)索引SelectedItem獲取列表控件中索引最小的選定項(xiàng)SelectionMode獲取或設(shè)置ListBox控件的選擇模式3.2HTML服務(wù)器控件
ASP.NET的Web窗體也支持HTML服務(wù)器控件,在工具箱的HTML子項(xiàng)就可以找到它們,你可能會(huì)發(fā)現(xiàn)HTML服務(wù)器控件和剛才介紹的Web服務(wù)器控件有些重復(fù),它同樣也具有按鈕控件、文本框控件等,那它與Web控件有什么區(qū)別呢,什么時(shí)候應(yīng)該用Web服務(wù)器控件什么時(shí)候應(yīng)該用HTML服務(wù)器控件HTML服務(wù)器控件與Web服務(wù)器控件的區(qū)別瀏覽器都支持基本的HTML元素,而應(yīng)用這些基本的HTML元素可以組合出復(fù)雜的元素,HTML服務(wù)器控件和基本的HTML元素是對(duì)應(yīng)的。使用Web服務(wù)器控件時(shí),從服務(wù)器方的角度來看根本不知道最終控件會(huì)在瀏覽器中用什么樣的HTML元素顯示出來,顯示一個(gè)Web服務(wù)器控件可能需要組合多個(gè)HTML元素,也就是說瀏覽器顯示什么樣的HTML元素對(duì)服務(wù)端是透明的。HTML服務(wù)器控件提供了操縱瀏覽器HTML元素的機(jī)會(huì)。3.2HTML服務(wù)器控件
【例】新建一個(gè)Web項(xiàng)目,將位置欄中的項(xiàng)目名改為TestHTML。從【工具箱】中的HTML欄內(nèi)添加一個(gè)Button控件,切換到Web窗體的HTML對(duì)話框,將會(huì)顯示aspx文件的內(nèi)容,如以下代碼所示:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="TestHTML._Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="/1999/xhtml"><headrunat="server"><title>無標(biāo)題頁</title></head><body><formid="form1"runat="server"><div><inputid="Button1"style="width:110px"type="button"value="button"/></div></form></body></html>3.2HTML服務(wù)器控件
該Button控件在aspx文件里直接對(duì)應(yīng)著一個(gè)HTML元素,因此會(huì)不加處理地直接傳給瀏覽器,其他的HTML控件也與此類似。也可以在服務(wù)器端處理HTML服務(wù)器控件的事件,不過要先使它們能在服務(wù)器端運(yùn)行。在上面的例子的Web窗體的設(shè)計(jì)對(duì)話框中右擊Button控件,從中選擇【作為服務(wù)器控件運(yùn)行在Button控件的左上方會(huì)出現(xiàn)一個(gè)小綠色箭頭,它就表明該控件將作為服務(wù)器控件運(yùn)行,這時(shí)在aspx文件里對(duì)應(yīng)的行變成:<inputid="Button1"style="width:110px"type="button"value="button"runat="server"/></div>3.2HTML服務(wù)器控件
使HTML控件作為服務(wù)器控件運(yùn)行
3.2HTML服務(wù)器控件
通過加入runat=“server”使它從簡單的HTML元素變成了HTML服務(wù)器控件,這樣就可以像Web服務(wù)器對(duì)它進(jìn)行服務(wù)器端編程。在上面的設(shè)計(jì)對(duì)話框中雙擊Button控件將切換到代碼編輯對(duì)話框,在Button1_ServerClick方法下填寫如下代碼:privatevoidButton1_ServerClick(objectsender,System.EventArgse){//改變按鈕標(biāo)簽Button1.Value="Click";}運(yùn)行這個(gè)程序,單擊Button按鈕,頁面刷新過后Button按鈕的標(biāo)簽就變成了Click。該Button按鈕的回發(fā)也是由客戶端腳本程序產(chǎn)生的,可以使用上面介紹查看瀏覽器內(nèi)容的方法來具體看一下實(shí)現(xiàn)過程,這些客戶端腳本程序是Web服務(wù)器處理ASP.NET程序時(shí)產(chǎn)生的?,F(xiàn)在就面臨著如何在Web服務(wù)器控件和HTML服務(wù)器控件直接選擇的問題,這里建議如果偏愛使用RAD編程模型的話最好使用Web服務(wù)器控件,如果想更好地控制瀏覽器的顯示,與客戶端腳本程序交互,那么就請(qǐng)用HTML服務(wù)器控件。web服務(wù)器控件HTML服務(wù)器控件和HTML控件的區(qū)別(1)Html控件最常用,出現(xiàn)最早web服務(wù)器控件(ASP
.NET
Server
Control)與WinForm開發(fā)相似HTML服務(wù)器控件(HTML
Server
Control)向下兼容基于ASP系統(tǒng)的移植而推出的介于以上兩者之間的權(quán)宜產(chǎn)物web服務(wù)器控件HTML服務(wù)器控件和HTML控件的區(qū)別(2)Html控件的標(biāo)簽<inputid="Button"type="button"value="Button"/>Html服務(wù)器控件的標(biāo)簽<inputid="Button"type="button"value="Button"runat="server"/>Html服務(wù)器控件其實(shí)就是Html控件的基礎(chǔ)上加上runat="server"所構(gòu)成的控件Web服務(wù)器控件的標(biāo)簽<asp:ButtonID="Button"runat="server"Text="Button"/>Web服務(wù)器控件會(huì)根據(jù)情況在瀏覽器端產(chǎn)生一個(gè)或多個(gè)對(duì)應(yīng)的Html標(biāo)簽web服務(wù)器控件HTML服務(wù)器控件和HTML控件的區(qū)別(3)Html控件不能在服務(wù)器端控制,只能在瀏覽器端通過javascript等腳本語言操作Html服務(wù)器控件設(shè)定了runat="server"屬性后,頁面對(duì)象會(huì)將該控件載入控制器,服務(wù)器端的代碼就能對(duì)其進(jìn)行控制Html服務(wù)器控件在頁面執(zhí)行完畢后會(huì)被轉(zhuǎn)換成Html標(biāo)注,然后當(dāng)成字符串流發(fā)送到瀏覽器端,瀏覽器端的腳本能夠進(jìn)行操作。Web服務(wù)器控件的操作則是由頁面把Form發(fā)回服務(wù)器,然后完全由服務(wù)器端代碼處理web服務(wù)器控件HTML服務(wù)器控件和HTML控件的區(qū)別(4)Html控件不能在服務(wù)器端控制,只能在瀏覽器端通過javascript等腳本語言操作Html服務(wù)器控件設(shè)定了runat="server"屬性后,頁面對(duì)象會(huì)將該控件載入控制器,服務(wù)器端的代碼就能對(duì)其進(jìn)行控制Html服務(wù)器控件在頁面執(zhí)行完畢后會(huì)被轉(zhuǎn)換成Html標(biāo)注,然后當(dāng)成字符串流發(fā)送到瀏覽器端,瀏覽器端的腳本能夠進(jìn)行操作。Web服務(wù)器控件的操作則是由頁面把Form發(fā)回服務(wù)器,然后完全由服務(wù)器端代碼處理Web服務(wù)器控件、Html服務(wù)器控件和Html控件的優(yōu)缺點(diǎn)Html控件和Html服務(wù)器控件需要編碼以保持瀏覽器兼容。Web服務(wù)器控件能夠檢測瀏覽器的兼容性,保持表現(xiàn)的一致
Html服務(wù)器控件通過為Html控件添加runat="server"以實(shí)現(xiàn)ASP程序的移植。將ASP程序移植成使用Web服務(wù)器控件的ASP.Net程序相當(dāng)于重寫新的應(yīng)用
Html控件和Html服務(wù)器控件是標(biāo)準(zhǔn)控件,能夠用瀏覽器端腳本語言操作。使用Web服務(wù)器控件提供的對(duì)象模型,能夠得到和WinForm類似的編程體驗(yàn),而且無需再學(xué)習(xí)不同的腳本語言。Web服務(wù)器內(nèi)部的代碼并不開放,你無法獲得比較直接的控制Web服務(wù)器控件、Html服務(wù)器控件和Html控件小結(jié)Html服務(wù)器控件作為一個(gè)過渡的實(shí)現(xiàn),雖然能夠兼顧瀏覽器端和服務(wù)器端,終究是一個(gè)奇怪的存在,盡量少使用為妙從微軟的角度,良好封裝的Web服務(wù)器控件提供了大量的便利,同時(shí)WebForm和WinForm開發(fā)模式的差異使得相互的經(jīng)驗(yàn)?zāi)軌蚧ネǎ?dāng)然是多使用Web服務(wù)器控件為好。不過Web服務(wù)器控件的缺點(diǎn)是占用服務(wù)器資源,頁面Postback過多存在的就是合理的,Html還是要會(huì)地,Javascript當(dāng)然是要好好學(xué)地,Web開發(fā)各種奇奇怪怪的標(biāo)簽共存于Page中的場面短時(shí)間內(nèi)是不可能消失地3.3驗(yàn)證控件
ASP.NET提供了多種驗(yàn)證控件這些驗(yàn)證控件都支持服務(wù)器端驗(yàn)證,如果瀏覽器支持DHTML的話也可提供客戶端驗(yàn)證。如果運(yùn)用得當(dāng)客戶端驗(yàn)證可以有效地減少與服務(wù)器端的交互,極大地提高Web應(yīng)用程序的性能。驗(yàn)證控件通常要認(rèn)證其他控件的有效性,因而必須和其他控件一起使用,它們都具有一個(gè)屬性ControlToValidate來指定要驗(yàn)證的控件,這個(gè)值是必需的,否則驗(yàn)證控件將會(huì)出錯(cuò)3.3驗(yàn)證控件
名稱描述RequiredFieldValidator確保用戶不會(huì)跳過某一項(xiàng)CompareValidator使用比較運(yùn)算符(小于、等于、大于等)比較用戶的輸入與一個(gè)常量值或另一控件的屬性值RegularExpressionValidator檢查項(xiàng)與正則表達(dá)式定義的模式是否匹配。這種驗(yàn)證類型允許檢查可預(yù)知的字符序列,如社會(huì)保障號(hào)、電子郵件地址、電話號(hào)碼、郵政編碼等中的字符序列CustomValidator使用自己編寫的驗(yàn)證邏輯檢查用戶的輸入ValidationSummary在一個(gè)統(tǒng)一摘要中顯示頁上所有其他驗(yàn)證控件的錯(cuò)誤信息RangeValidator檢查用戶的輸入是否在指定的上下限內(nèi)??梢詸z查數(shù)字對(duì)、字母字符對(duì)和日期對(duì)的范圍。邊界可以表示為常數(shù)或從其他控件導(dǎo)出的值3.3驗(yàn)證控件-示例【例】打開VisualStudio.NET新建一個(gè)Web應(yīng)用程序項(xiàng)目,命名為Validator。向Web窗體中添加標(biāo)簽控件、輸入控件和驗(yàn)證控件。依次放入5個(gè)標(biāo)簽控件,設(shè)定它們的Text屬性分別為“姓名”、“年齡”、“密碼”、“確認(rèn)密碼”和“E-mail”。在標(biāo)簽控件之后依次放入5個(gè)輸入框控件,它們的ID在默認(rèn)狀態(tài)下會(huì)自動(dòng)設(shè)為TextBox1、TextBox2、TextBox3、TextBox4和TextBox5。設(shè)定TextBox3和TextBox4的TextMode屬性為Password。在TextBox1、TextBox2、TextBox4和TextBox5控件后分別放入一個(gè)RequiredFieldValidator驗(yàn)證控件,分別將這些RequiredFieldValidatork控件的ErrMessage屬性設(shè)定為“姓名不能為空”、“年齡不能為空”、“密碼不能為空”和“E-mail不能為空”,ControlToValidate屬性分別設(shè)置為TextBox1、TextBox2、TextBox4和TextBox5。TextBox2后再放入一個(gè)RangeValidator驗(yàn)證控件其ErrMessage屬性設(shè)為“值不合法”,ControlToValidate屬性設(shè)為TextBox2,MaximumValue屬性設(shè)為100,Minimum屬性設(shè)為1,Type屬性設(shè)為Integer。TextBox4后再放入一個(gè)CompareValidator控件,它的ErrMessage屬性設(shè)為“兩次輸入不一致”,ControlToCompare屬性設(shè)為TextBox3,ControlToValidtae屬性設(shè)為TextBox4。Text5后再放一個(gè)RegularExpressionValidator控件ErrMessage屬性設(shè)為“輸入不正確”,ControlToValidator屬性設(shè)為TextBox5,當(dāng)在屬性對(duì)話框選擇ValidationExpress屬性時(shí)會(huì)彈出【正則表達(dá)式編輯器】對(duì)話框,從中選擇【Internet電子郵件地址】最后向窗體中添加一個(gè)Button控件和一個(gè)ValidationSummary控件。3.3驗(yàn)證控件-示例RequiredFieldValidator控件保證它所驗(yàn)證控件的輸入不能為空RangeValidator控件保證了它所驗(yàn)證控件的輸入應(yīng)在一定的范圍內(nèi)。在本例中保證在TextBox2中輸入為1到100之間的整型值。
CompareValidator控件將它驗(yàn)證的控件的內(nèi)容與另一個(gè)控件或另一個(gè)值進(jìn)行比較,在本例中使用了ControlToCompare屬性,以此來表明需要與另一控件相比較,默認(rèn)的比較操作屬性O(shè)perator的值是Equal(相等),這樣該控件的功能其實(shí)就是保證兩次密碼輸入相等。RegularExpressionValidator保證控件的輸入應(yīng)滿足特定的正則表達(dá)式規(guī)則,本例指定為“Internet電子郵件地址”,即要求TextBox5中要輸入一個(gè)電子郵件地址。這些驗(yàn)證控件的EnableClientScript現(xiàn)在都默認(rèn)為True,這就表明將生成瀏覽器腳本在客戶端進(jìn)行驗(yàn)證。運(yùn)行程序,在驗(yàn)證控件對(duì)應(yīng)的文本框中必須正確輸入,否則將會(huì)在驗(yàn)證控件的位置出現(xiàn)錯(cuò)誤信息,在ValidationSummary控件中則會(huì)顯示出所有這些錯(cuò)誤信息CustomValidator控件提供了用戶自定義的功能,當(dāng)上面的驗(yàn)證控件都無法滿足要求的時(shí)候就需要CustomValidator控件了。它提供了自定義客戶端與服務(wù)器端驗(yàn)證的功能,它包含有一個(gè)ClientValidationFunction屬性和ServerValidate事件,可以分別與客戶端和服務(wù)器端進(jìn)行綁定,然后編寫滿足自己需要的驗(yàn)證函數(shù)3.3驗(yàn)證控件-驗(yàn)證控件的使用
3.3驗(yàn)證控件-正則表達(dá)式編輯器
3.3驗(yàn)證控件-程序的運(yùn)行3.4用戶控件
當(dāng)ASP.NET提供的控件都無法滿足要求的時(shí)候就需要自己編寫控件了,這些控件叫做用戶控件??梢允褂脙煞N方式來創(chuàng)建用戶控件一種方式是把以前編寫的Web頁面包裝成控件,這樣的控件稱為Web用戶控件另一種方式是從.NET的某個(gè)框架類繼承一個(gè)新類用來生成控件,這樣的控件稱為Web自定義控件3.4用戶控件-Web用戶控件先來介紹第一種方式,下面創(chuàng)建一個(gè)Web窗體,然后把它轉(zhuǎn)化成Web用戶控件的形式,接著再創(chuàng)建一個(gè)新的Web窗體來使用這個(gè)控件?!纠啃陆ㄒ粋€(gè)ASP.NETWeb應(yīng)用程序,命名為MyControl,在窗體上放入一個(gè)標(biāo)簽控件、一個(gè)文本框控件和一個(gè)Button控件。雙擊Button控件將切換到代碼編輯對(duì)話框,在Button1_Click方法中填寫下列代碼:privatevoidButton1_Click(objectsender,System.EventArgse){//改變文本標(biāo)簽的內(nèi)容Label1.Text="Hello"+TextBox1.Text;}切換到Web窗體的HTML代碼對(duì)話框,將顯示出WebForm1.aspx文件的內(nèi)容。現(xiàn)在依次進(jìn)行下面步驟,將Web頁面轉(zhuǎn)換成Web控件。(1) 從文件中刪除<HTML>標(biāo)簽、<!DOCTYPE>標(biāo)簽、<HEAD>標(biāo)簽及內(nèi)容、<BODY>標(biāo)簽和<FORM>標(biāo)簽。(2) 將文件第一行的Page改為Control并把WebForm1.aspx.cs更名為WebForm1.ascx.cs3.4用戶控件-Web用戶控件
3.4用戶控件-Web用戶控件
(3)在解決方案對(duì)話框中選中WebForm1.aspx,右擊選擇【重命名】,將WebForm1.aspx的名字改為WebForm1.ascx,這時(shí)文件WebForm1.aspx.cs也會(huì)自動(dòng)更名為WebForm1.ascx.cs。將WebForm1.ascx.cs中的publicclassWebForm1:System.Web.UI.Page一行改為publicclassWebForm1:System.Web.UI.UserControl(4)保存項(xiàng)目,Web用戶控件就完成了。這個(gè)Web用戶控件只實(shí)現(xiàn)了很簡單的功能。為使一個(gè)Web對(duì)話框變?yōu)榭丶仨毷紫葘⑵渲械捻撁嬖貏h除,其次由于Web用戶控件的擴(kuò)展名為ascx,因此也要將aspx擴(kuò)展名變?yōu)閍scx,最后Web用戶控件應(yīng)由用戶控件類派生。下面用一個(gè)新的Web應(yīng)用程序項(xiàng)目來測試一下剛才生成的Web用戶控件。新建一個(gè)ASP.NETWeb應(yīng)用程序,命名為UserControl。在解決方案資源管理器對(duì)話框內(nèi)的UserControl項(xiàng)上右擊,選擇【添加現(xiàn)有項(xiàng)】,彈出【添加現(xiàn)有項(xiàng)】對(duì)話框,文件類型中選擇【公用Web文件】,定位到MyControl目錄選定WebForm1.ascx,單擊【打開】按鈕。添加MyControl引用這時(shí)就把Web用戶控件添加到了UserControl項(xiàng)目中,在解決方案資源管理器內(nèi)單擊WebForm1.ascx,把它拖動(dòng)到Web對(duì)話框中。Web對(duì)話框中就會(huì)出現(xiàn)剛才新建的Web用戶控件由于現(xiàn)在的控件沒有設(shè)計(jì)器的支持,因此在設(shè)計(jì)對(duì)話框中沒有顯示出Web用戶控件的顯示界面。執(zhí)行這個(gè)項(xiàng)目,在文本框內(nèi)輸入“maj”,單擊按鈕,這時(shí)標(biāo)簽中就會(huì)顯示出“Hellomaj”。整個(gè)頁面的功能其實(shí)都是由一個(gè)Web用戶控件提供的??梢詫⒏鼜?fù)雜的窗體組合在一起做成Web用戶控件,使用在項(xiàng)目里以達(dá)到代碼重用的目的3.4用戶控件-添加現(xiàn)有項(xiàng)對(duì)話框
3.4用戶控件-向窗體中添加Web用戶控件3.4用戶控件-使用Web用戶控件
3.4用戶控件-Web自定義控件
Web自定義控件是一種更方便、功能更強(qiáng)大的設(shè)置用戶控件的方式。它最終將編譯成DLL文件,可以方便地進(jìn)行發(fā)布?!纠啃陆ㄒ粋€(gè)項(xiàng)目,在右側(cè)【模板】欄內(nèi)選擇【W(wǎng)eb控件庫】,將項(xiàng)目名稱改為MyCustomControl,單擊【確定】按鈕。usingSystem;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.ComponentModel;namespaceMyCustomControl{[DefaultProperty("Text"),ToolboxData("<{0}:WebCustomControl1runat=server></{0}:WebCustomControl1>")]publicclassWebCustomControl1:System.Web.UI.WebControls.WebControl{///<summary>///將此控件呈現(xiàn)給指定的輸出參數(shù)///</summary>///<paramname="output">要寫出到的HTML編寫器</param>//輸出當(dāng)前時(shí)間protectedoverridevoidRender(HtmlTextWriteroutput){output.Write(DateTime.Now.ToString());}}}3.4用戶控件-Web自定義控件
上面的代碼實(shí)現(xiàn)了一個(gè)顯示出當(dāng)前時(shí)間的控件。當(dāng)控件呈現(xiàn)在頁面上時(shí)會(huì)調(diào)用Render方法,本例中當(dāng)前的時(shí)間就是在Render方法中輸出的。這個(gè)控件沒有公開任何的屬性和事件。保存項(xiàng)目,選擇【生成】|【生成MyCustomControl】命令,這將會(huì)在該項(xiàng)目對(duì)應(yīng)目錄的bin\Debug子目錄下生成名為MyCustomControl.dll的文件。這樣這個(gè)簡單的Web自定義控件就生成了?,F(xiàn)在演示如何使用這個(gè)控件。新建一個(gè)ASP.NETWeb應(yīng)用程序項(xiàng)目,命名為UseCustomControl。下一步要把新建的控件加入到工具箱內(nèi),選擇【工具】|【選擇工具箱】命令單擊【瀏覽】按鈕,在彈出的對(duì)話框中選定CustomControl項(xiàng)目所在目錄,選定文件CustomControl.dll,單擊【確定】按鈕。這樣在Web的工具箱中就會(huì)出現(xiàn)一個(gè)新的控件。選定該控件并把它添加到窗體上。執(zhí)行這個(gè)項(xiàng)目。在瀏覽器中顯示出了當(dāng)前的時(shí)間。例子雖然簡單但是卻演示了Web自定義控件的基本生成方法,生成用戶自定義控件的過程都是一致的,如果綜合運(yùn)用.NET的類庫就可以實(shí)現(xiàn)更加復(fù)雜的自定義控件。如果想使控件設(shè)計(jì)時(shí)更加美觀,可以將System.Design.dll引用到項(xiàng)目里,并從System.Web.UI.Design.ControlDesigner繼承一個(gè)新類,實(shí)現(xiàn)該類的GetDesignTimeHtml方法,并把它加入到自定義控件的屬性聲明中,這樣就可像普通Web服務(wù)器控件一樣在設(shè)計(jì)階段就可以顯示出外觀3.4用戶控件
向工具箱中添加控件
3.4用戶控件
添加到工具箱中的用戶自定義控件
3.4用戶控件
用戶自定義控件的使用
4創(chuàng)建Web服務(wù)4.1Web服務(wù)
4.2一個(gè)簡單的Web服務(wù)
4.3使用Web服務(wù)訪問數(shù)據(jù)庫4.1Web服務(wù)
Web服務(wù)提供了一種調(diào)用網(wǎng)絡(luò)應(yīng)用的新方法,剛一出現(xiàn)就表現(xiàn)出了極大的生命力,它也許會(huì)帶來網(wǎng)絡(luò)應(yīng)用程序的重大變革在Internet的發(fā)展中,如何使各種應(yīng)用系統(tǒng)有效集成一直是一個(gè)令人頭痛的問題。使用不同技術(shù)建立起來的Internet應(yīng)用系統(tǒng)無法互相通信,彼此的功能無法相互調(diào)用,造成了網(wǎng)絡(luò)資源的極大浪費(fèi)。雖然CORBA、DCOM/COM+等技術(shù)為此進(jìn)行了極大的努力,但目前仍然無法有效地解決問題,Web服務(wù)的出現(xiàn)給我們帶來了新的希望Web服務(wù)使用基于XML的消息協(xié)議SOAP,提供了規(guī)范的數(shù)據(jù)封包格式并且使用HTTP協(xié)議傳輸,從而可以方便地在各種異構(gòu)的應(yīng)用系統(tǒng)之間進(jìn)行通訊。同樣基于XML的WSDL用作Web服務(wù)的服務(wù)描述,它向外公布了Web服務(wù)所提供服務(wù)的接口。UDDI則提供了Web服務(wù)的服務(wù)發(fā)現(xiàn)機(jī)制4.2一個(gè)簡單的Web服務(wù)
下面來創(chuàng)建一個(gè)簡單的Web服務(wù)來演示它的基本組成?!纠縑isualStudio.NET為Web服務(wù)提供了強(qiáng)大的支持,借助它可以方便地進(jìn)行Web服務(wù)的開發(fā)。打開VisualStudio.NET,新建項(xiàng)目,在項(xiàng)目模板中選擇【ASP.NETWeb服務(wù)】,命名為MyWebService。這時(shí)將出現(xiàn)設(shè)計(jì)對(duì)話框,現(xiàn)在切換到代碼編輯對(duì)話框,按下面的程序改變對(duì)話框中的代碼。usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web.Services;namespaceMyWebService{///Service1的摘要說明///</summary>///4.2一個(gè)簡單的Web服務(wù)
//設(shè)定該Web服務(wù)的命名空間[WebService(Namespace="/")]publicclassService1:System.Web.Services.WebService{publicService1(){//CODEGEN:該調(diào)用是ASP.NETWeb服務(wù)設(shè)計(jì)器所必需的InitializeComponent();}#regionComponentDesignergeneratedcode//Web服務(wù)設(shè)計(jì)器所必需的privateIContainercomponents=null;///<summary>///設(shè)計(jì)器支持所需的方法-不要使用代碼編輯器修改///此方法的內(nèi)容。///</summary>privatevoidInitializeComponent(){}///<summary>///清理所有正在使用的資源///</summary>protectedoverridevoidDispose(booldisposing){if(disposing&&components!=null){components.Dispose();}base.Dispose(disposing); }4.2一個(gè)簡單的Web服務(wù)
#endregion//WEB服務(wù)示例//HelloWorld()示例服務(wù)返回字符串HelloWorld//若要生成,請(qǐng)取消注釋下列行,然后保存并生成項(xiàng)目//若要測試此Web服務(wù),請(qǐng)按F5鍵//實(shí)現(xiàn)兩個(gè)數(shù)相加的Web服務(wù)[WebMethod]publicintAdd(intfirstnumber,intsecondnumber){returnfirstnumber+secondnumber;}}}這樣就實(shí)現(xiàn)了一個(gè)簡單的Web服務(wù),它只提供了一項(xiàng)功能,計(jì)算兩個(gè)整數(shù)的和。現(xiàn)在運(yùn)行程序來測試這個(gè)Web服務(wù)。不過要注意Web服務(wù)并不是在運(yùn)行后的瀏覽器對(duì)話框中顯示的這樣,它本身只是提供給用戶的服務(wù),這里看到的只是ASP.NET提供的一個(gè)方便的測試界面。4.2一個(gè)簡單的Web服務(wù)
測試Web服務(wù)
4.2一個(gè)簡單的Web服務(wù)
在類Service1上加入一行[WebService(Namespace="/")]表明該Web服務(wù)的命名空間,它用來和其他Web服務(wù)相區(qū)別。下面的Add方法上的[WebMethod]表明這是一個(gè)Web方法,這個(gè)方法的功能很簡單,只是將傳入的兩個(gè)數(shù)相加并返回結(jié)果。上面在瀏覽器中測試的就是該方法。4.2一個(gè)簡單的Web服務(wù)
測試Add方法
4.2一個(gè)簡單的Web服務(wù)
Web服務(wù)調(diào)用結(jié)果
4.3使用Web服務(wù)訪問數(shù)據(jù)庫
下面結(jié)合使用ADO.NET創(chuàng)建一個(gè)可訪問數(shù)據(jù)庫的Web服務(wù),同時(shí)編寫一個(gè)客戶端程序,用來調(diào)用這個(gè)Web服務(wù)?!纠啃陆?xiàng)目,在【模板】中選擇【ASP.NETWeb服務(wù)】,將該項(xiàng)目命名為MyDataService。usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web.Services;namespaceMyDataService{///<summary>///Service1的摘要說明///</summary>//指定該Web服務(wù)的命名空間[WebService(Namespace="/")]publicclassService1:System.Web.Services.WebService{publicService1(){//CODEGEN:該調(diào)用是ASP.NETWeb服務(wù)設(shè)計(jì)器所必需的InitializeComponent();}4.3使用Web服務(wù)訪問數(shù)據(jù)庫
#regionComponentDesignergeneratedcode//Web服務(wù)設(shè)計(jì)器所必需的privateIContainercomponents=null;///<summary>///設(shè)計(jì)器支持所需的方法-不要使用代碼編輯器修改此方法的內(nèi)容///</summary>privatevoidInitializeComponent(){}///<summary>///清理所有正在使用的資源///</summary>protectedoverridevoidDispose(booldisposing){if(disposing&&components!=null){components.Dispose();}base.Dispose(disposing); }4.3使用Web服務(wù)訪問數(shù)據(jù)庫
#endregion//建立一個(gè)sqlConnection連接SQLServer數(shù)據(jù)庫publicSqlConnectionmyConn=newSqlConnection("DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind");[WebMethod]publicDataSetGetDataSet(){//建立一個(gè)sqlDataAdapter取得products表內(nèi)容Sql
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國丙烯彩印袋數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年中國防風(fēng)遠(yuǎn)紅外型內(nèi)衣市場調(diào)查研究報(bào)告
- 2025年中國電線線扣市場調(diào)查研究報(bào)告
- 企業(yè)文化建設(shè)與組織發(fā)展策略實(shí)施考核試卷
- 二零二五年度海外人才引進(jìn)計(jì)劃外籍教師聘用合同
- 扶貧模式探索考核試卷
- 2025-2030年可擦寫白板筆行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年戶外運(yùn)動(dòng)裝備租賃APP行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 2025-2030年廚房衛(wèi)生監(jiān)督與管理機(jī)器人行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年商用微波爐能效提升行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)(2024年第四季度)
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2025江蘇連云港市贛榆城市建設(shè)發(fā)展集團(tuán)限公司招聘工作人員15人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 江蘇省揚(yáng)州市蔣王小學(xué)2023~2024年五年級(jí)上學(xué)期英語期末試卷(含答案無聽力原文無音頻)
- 數(shù)學(xué)-湖南省新高考教學(xué)教研聯(lián)盟(長郡二十校聯(lián)盟)2024-2025學(xué)年2025屆高三上學(xué)期第一次預(yù)熱演練試題和答案
- 決勝中層:中層管理者的九項(xiàng)修煉-記錄
- 《軌道交通工程盾構(gòu)施工技術(shù)》 課件 項(xiàng)目2 盾構(gòu)構(gòu)造認(rèn)知
- 《港珠澳大橋演講》課件
- 《有機(jī)化學(xué)》課件-第十章 羧酸及其衍生物
- 課堂教學(xué)方法與手段(課堂PPT)課件(PPT 16頁)
- 氯鹽型和環(huán)保型融雪劑發(fā)展現(xiàn)狀
評(píng)論
0/150
提交評(píng)論