C#-開發(fā)Web應(yīng)用程序_第1頁
C#-開發(fā)Web應(yīng)用程序_第2頁
C#-開發(fā)Web應(yīng)用程序_第3頁
C#-開發(fā)Web應(yīng)用程序_第4頁
C#-開發(fā)Web應(yīng)用程序_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(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ā)平臺,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是一個功能十分強(qiáng)大的開發(fā)工具,我們先來使用它創(chuàng)建一個簡單的Web應(yīng)用程序,然后逐步對這個程序進(jìn)行講解?!纠看蜷_VisualStudio.NET,選擇【文件】|【新建】|【項目】命令。從【模板】欄內(nèi)選擇【ASP.NETWeb應(yīng)用程序】。如果是第一次創(chuàng)建,Web應(yīng)用程序的名稱將是WebApplication1,接受默認(rèn)值,單擊【確定】按鈕。這時將出現(xiàn)WebForm1.aspx的設(shè)計界面,現(xiàn)在可以向其中添加控件形成一個完整的Web窗體。2.1ASP.NET的基本語法基本文件名種類:.asax文件:ASP.NET的系統(tǒng)環(huán)境設(shè)置文件。.aspx文件:內(nèi)含ASP程序代碼的文件,瀏覽器可執(zhí)行此類文件,向服務(wù)器提出瀏覽請求。.asmx文件:制作WebServices的源文件。.sdl文件:制作WebServices的XML格式的文件。.vb或.cs文件:在非ASP.NET環(huán)境下,執(zhí)行WebServices的文件。.aspc文件:可重復(fù)使用多個.aspx文件,此文件內(nèi)可含有控件。.ascx文件:內(nèi)含UserControl的文件,可內(nèi)含在多個.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窗體頁中,用戶界面編程分為兩個不同的部分:可視控件和邏輯。視覺元素稱作Web窗體“頁”(page)。這種頁由一個包含靜態(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)的事件,可以為這些事件生成代碼。每個控件都有它們自己的特殊事件,例如,按鈕控件有Click事件,文本框有TextChanged事件。Web窗體事件和Windows窗體事件有一個重要的區(qū)別:Windows窗體的事件是在本地機(jī)進(jìn)行處理的;與Web窗體事件相關(guān)的代碼被存儲在Web服務(wù)器上的的代碼文件中,這意味著當(dāng)運(yùn)行在用戶瀏覽器上的Web窗體中的事件被觸發(fā)時,窗體不得不回叫Web服務(wù)器來處理它的事件。當(dāng)事件被觸發(fā)時,Web窗體頁再次與Web服務(wù)器通信來處理這些代碼。因此,過多地使用控件事件會造成頻繁地訪問服務(wù)器。3ASP.NET服務(wù)器端控件3.1Web服務(wù)器控件

3.2HTML服務(wù)器控件

3.3驗證控件

3.4用戶控件3ASP.NET服務(wù)器端控件服務(wù)器端控件是ASP.NET編程的基礎(chǔ),編寫Web頁面很大程度上就是將控件拼湊起來,以使其協(xié)同工作。Web窗體總共可以加入4種控件,它們是:Web服務(wù)器控件,HTML服務(wù)器控件,驗證控件和用戶控件3.1Web服務(wù)器控件

VisualStudio.NET提供了眾多的Web服務(wù)器控件,這些控件都包含多種屬性,更改這些屬性可使控件具有不同的功能??丶膶傩约瓤梢栽赩isualStudio.NET的屬性對話框中進(jìn)行靜態(tài)更改,也可以在程序運(yùn)行時進(jìn)行動態(tài)更改。3.1Web服務(wù)器控件-文本框控件

TextBox控件文本框控件提供了向Web窗體輸入信息的方法,可以將文本框的TextMode屬性賦為SingLine、MultiLine和Password來改變它的行為模式3.1Web服務(wù)器控件-文本框控件的公共屬性名稱描述Columns獲取或設(shè)置文本框的顯示寬度(以字符為單位)MaxLength獲取或設(shè)置文本框中最多允許的字符數(shù)ReadOnly獲取或設(shè)置一個值,用于指示能否更改TextBox控件的內(nèi)容Rows獲取或設(shè)置多行文本框的顯示高度Text獲取或設(shè)置文本框的文本內(nèi)容TextMode獲取或設(shè)置文本框的行為模式Wrap獲取或設(shè)置一個值,該值指示文本框內(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)容移動到剪貼板中Paste用剪貼板的內(nèi)容替換文本框中的當(dāng)前選定內(nèi)容Hide對用戶隱藏控件3.1Web服務(wù)器控件-按鈕控件VisualStudio.NET的工具箱中提供了3種按鈕控件:普通按鈕Button、顯示超鏈接樣式的按鈕LinkButton和顯示圖像樣式的ImageButton。按鈕控件發(fā)生Click事件時會直接導(dǎo)致向服務(wù)器端提交。3.1Web服務(wù)器控件-按鈕控件公共屬性名稱描述CausesValidation獲取或設(shè)置一個值,該值指示在單擊Button控件時是否執(zhí)行了驗證Text獲取或設(shè)置在Button控件中顯示的文本標(biāo)題ToolTip獲取或設(shè)置當(dāng)鼠標(biāo)指針懸停在Web服務(wù)器控件上時顯示的文本Button和LinkButton控件的公共屬性名稱描述AlternateText獲取或設(shè)置當(dāng)圖像不可用時,Image控件中顯示的替換文本。支持工具提示功能的瀏覽器將此文本顯示為工具提示ImageAlign獲取或設(shè)置控件相對于Web頁上其他元素的對齊方式ImageUrl獲取或設(shè)置在控件中顯示的圖像的位置ImageButton控件的公共屬性

3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件復(fù)選框控件(CheckBox、CheckBoxList)和單選按鈕控件(RadioButton、RadioButtonList)復(fù)選框控件和單選按鈕控件十分類似,它們都允許從多個選項中進(jìn)行選擇,不同的是復(fù)選框控件允許同時選擇多項,而單選按鈕控件每次只能選擇一項。CheckBoxList控件和RadioButtonList控件可以單獨(dú)使用,而CheckBox控件和RadioButton控件則需要多個一起使用。它們都可以和數(shù)據(jù)源進(jìn)行綁定,不過比較起來使用CheckBoxList控件和RadioButtonList控件訪問數(shù)據(jù)更為方便一些3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件對CheckBoxList控件和RadioButtonList控件來說,可以直接通過Items屬性來設(shè)置顯示項和標(biāo)簽。打開這些控件屬性對話框中的Items項,將出現(xiàn)ListItem集合編輯器可以在左側(cè)【成員】欄內(nèi)添加顯示項,右邊的屬性欄可以設(shè)置該項的屬性。Selected屬性表明該項是否被選定,Text屬性的值將作為該項的顯示標(biāo)簽,Value的值可以作為編程時的內(nèi)部值使用,該值可與Text屬性采用不同的值3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件名稱描述Checked獲取或設(shè)置一個值,該值指示是否已選中控件Text獲取或設(shè)置與控件關(guān)聯(lián)的文本標(biāo)簽TextAlign獲取或設(shè)置與控件關(guān)聯(lián)的文本標(biāo)簽的對齊方式CheckBox和RadioButton控件的公共屬性3.1Web服務(wù)器控件-復(fù)選框和單選按鈕控件名稱描述CellPadding獲取或設(shè)置表單元格的邊框和內(nèi)容之間的距離(以像素為單位)CellSpacing獲取或設(shè)置單元格之間的距離(以像素為單位)DataMember獲取或設(shè)置要綁定到控件的DataSource中的特定表DataSource獲取或設(shè)置填充列表控件項的數(shù)據(jù)源DataTextField獲取或設(shè)置為列表項提供文本內(nèi)容的數(shù)據(jù)源字段DataTextFormatString獲取或設(shè)置格式化字符串,該字符串用來控制如何顯示綁定到列表控件的數(shù)據(jù)DataValueField獲取或設(shè)置為各列表項提供值的數(shù)據(jù)源字段Items獲取列表控件項的集合RepeatColumns獲取或設(shè)置要在控件中顯示的列數(shù)RepeatDirection獲取或設(shè)置一個值,該值指示控件是垂直顯示還是水平顯示RepeatLayout獲取或設(shè)置復(fù)選框的布局SelectedIndex獲取或設(shè)置列表中選定項的最低序號索引SelectedItem獲取列表控件中索引最小的選定項CheckBoxList和RadioButtonList控件的公共屬性

3.1Web服務(wù)器控件-DropDownList控件和ListBox控件DropDownList控件和ListBox控件都提供了選擇特定項的功能,不同處在于DropDownList控件提供一個下拉列表框進(jìn)行選擇,而ListBox控件直接提供多個選項,而且還可同時選擇ListBox控件中的多項與復(fù)選框控件和單選按鈕相同,它們都可以通過屬性對話框的Items項打開ListItem集合編輯器對顯示項進(jìn)行添加刪除,它們也都具有數(shù)據(jù)源綁定功能3.1Web服務(wù)器控件-DropDownList控件和ListBox控件ListItem集合編輯器3.1Web服務(wù)器控件-DropDownList控件公共屬性名稱描述Items獲取列表控件項的集合SelectedIndex已重寫。獲取或設(shè)置DropDownList控件中的選定項的索引SelectedItem獲取列表控件中索引最小的選定項3.1Web服務(wù)器控件-ListBox控件公共屬性名稱描述Items獲取列表控件項的集合Rows獲取或設(shè)置ListBox控件中顯示的行數(shù)SelectedIndex獲取或設(shè)置列表中選定項的最低序號索引SelectedItem獲取列表控件中索引最小的選定項SelectionMode獲取或設(shè)置ListBox控件的選擇模式3.2HTML服務(wù)器控件

ASP.NET的Web窗體也支持HTML服務(wù)器控件,在工具箱的HTML子項就可以找到它們,你可能會發(fā)現(xiàn)HTML服務(wù)器控件和剛才介紹的Web服務(wù)器控件有些重復(fù),它同樣也具有按鈕控件、文本框控件等,那它與Web控件有什么區(qū)別呢,什么時候應(yīng)該用Web服務(wù)器控件什么時候應(yīng)該用HTML服務(wù)器控件HTML服務(wù)器控件與Web服務(wù)器控件的區(qū)別瀏覽器都支持基本的HTML元素,而應(yīng)用這些基本的HTML元素可以組合出復(fù)雜的元素,HTML服務(wù)器控件和基本的HTML元素是對應(yīng)的。使用Web服務(wù)器控件時,從服務(wù)器方的角度來看根本不知道最終控件會在瀏覽器中用什么樣的HTML元素顯示出來,顯示一個Web服務(wù)器控件可能需要組合多個HTML元素,也就是說瀏覽器顯示什么樣的HTML元素對服務(wù)端是透明的。HTML服務(wù)器控件提供了操縱瀏覽器HTML元素的機(jī)會。3.2HTML服務(wù)器控件

【例】新建一個Web項目,將位置欄中的項目名改為TestHTML。從【工具箱】中的HTML欄內(nèi)添加一個Button控件,切換到Web窗體的HTML對話框,將會顯示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文件里直接對應(yīng)著一個HTML元素,因此會不加處理地直接傳給瀏覽器,其他的HTML控件也與此類似。也可以在服務(wù)器端處理HTML服務(wù)器控件的事件,不過要先使它們能在服務(wù)器端運(yùn)行。在上面的例子的Web窗體的設(shè)計對話框中右擊Button控件,從中選擇【作為服務(wù)器控件運(yùn)行在Button控件的左上方會出現(xiàn)一個小綠色箭頭,它就表明該控件將作為服務(wù)器控件運(yùn)行,這時在aspx文件里對應(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ù)器對它進(jìn)行服務(wù)器端編程。在上面的設(shè)計對話框中雙擊Button控件將切換到代碼編輯對話框,在Button1_ServerClick方法下填寫如下代碼:privatevoidButton1_ServerClick(objectsender,System.EventArgse){//改變按鈕標(biāo)簽Button1.Value="Click";}運(yùn)行這個程序,單擊Button按鈕,頁面刷新過后Button按鈕的標(biāo)簽就變成了Click。該Button按鈕的回發(fā)也是由客戶端腳本程序產(chǎn)生的,可以使用上面介紹查看瀏覽器內(nèi)容的方法來具體看一下實現(xiàn)過程,這些客戶端腳本程序是Web服務(wù)器處理ASP.NET程序時產(chǎn)生的?,F(xiàn)在就面臨著如何在Web服務(wù)器控件和HTML服務(wù)器控件直接選擇的問題,這里建議如果偏愛使用RAD編程模型的話最好使用Web服務(wù)器控件,如果想更好地控制瀏覽器的顯示,與客戶端腳本程序交互,那么就請用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ù)器控件其實就是Html控件的基礎(chǔ)上加上runat="server"所構(gòu)成的控件Web服務(wù)器控件的標(biāo)簽<asp:ButtonID="Button"runat="server"Text="Button"/>Web服務(wù)器控件會根據(jù)情況在瀏覽器端產(chǎn)生一個或多個對應(yīng)的Html標(biāo)簽web服務(wù)器控件HTML服務(wù)器控件和HTML控件的區(qū)別(3)Html控件不能在服務(wù)器端控制,只能在瀏覽器端通過javascript等腳本語言操作Html服務(wù)器控件設(shè)定了runat="server"屬性后,頁面對象會將該控件載入控制器,服務(wù)器端的代碼就能對其進(jìn)行控制Html服務(wù)器控件在頁面執(zhí)行完畢后會被轉(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"屬性后,頁面對象會將該控件載入控制器,服務(wù)器端的代碼就能對其進(jìn)行控制Html服務(wù)器控件在頁面執(zhí)行完畢后會被轉(zhuǎn)換成Html標(biāo)注,然后當(dāng)成字符串流發(fā)送到瀏覽器端,瀏覽器端的腳本能夠進(jìn)行操作。Web服務(wù)器控件的操作則是由頁面把Form發(fā)回服務(wù)器,然后完全由服務(wù)器端代碼處理Web服務(wù)器控件、Html服務(wù)器控件和Html控件的優(yōu)缺點Html控件和Html服務(wù)器控件需要編碼以保持瀏覽器兼容。Web服務(wù)器控件能夠檢測瀏覽器的兼容性,保持表現(xiàn)的一致

Html服務(wù)器控件通過為Html控件添加runat="server"以實現(xiàn)ASP程序的移植。將ASP程序移植成使用Web服務(wù)器控件的ASP.Net程序相當(dāng)于重寫新的應(yīng)用

Html控件和Html服務(wù)器控件是標(biāo)準(zhǔn)控件,能夠用瀏覽器端腳本語言操作。使用Web服務(wù)器控件提供的對象模型,能夠得到和WinForm類似的編程體驗,而且無需再學(xué)習(xí)不同的腳本語言。Web服務(wù)器內(nèi)部的代碼并不開放,你無法獲得比較直接的控制Web服務(wù)器控件、Html服務(wù)器控件和Html控件小結(jié)Html服務(wù)器控件作為一個過渡的實現(xiàn),雖然能夠兼顧瀏覽器端和服務(wù)器端,終究是一個奇怪的存在,盡量少使用為妙從微軟的角度,良好封裝的Web服務(wù)器控件提供了大量的便利,同時WebForm和WinForm開發(fā)模式的差異使得相互的經(jīng)驗?zāi)軌蚧ネǎ?dāng)然是多使用Web服務(wù)器控件為好。不過Web服務(wù)器控件的缺點是占用服務(wù)器資源,頁面Postback過多存在的就是合理的,Html還是要會地,Javascript當(dāng)然是要好好學(xué)地,Web開發(fā)各種奇奇怪怪的標(biāo)簽共存于Page中的場面短時間內(nèi)是不可能消失地3.3驗證控件

ASP.NET提供了多種驗證控件這些驗證控件都支持服務(wù)器端驗證,如果瀏覽器支持DHTML的話也可提供客戶端驗證。如果運(yùn)用得當(dāng)客戶端驗證可以有效地減少與服務(wù)器端的交互,極大地提高Web應(yīng)用程序的性能。驗證控件通常要認(rèn)證其他控件的有效性,因而必須和其他控件一起使用,它們都具有一個屬性ControlToValidate來指定要驗證的控件,這個值是必需的,否則驗證控件將會出錯3.3驗證控件

名稱描述RequiredFieldValidator確保用戶不會跳過某一項CompareValidator使用比較運(yùn)算符(小于、等于、大于等)比較用戶的輸入與一個常量值或另一控件的屬性值RegularExpressionValidator檢查項與正則表達(dá)式定義的模式是否匹配。這種驗證類型允許檢查可預(yù)知的字符序列,如社會保障號、電子郵件地址、電話號碼、郵政編碼等中的字符序列CustomValidator使用自己編寫的驗證邏輯檢查用戶的輸入ValidationSummary在一個統(tǒng)一摘要中顯示頁上所有其他驗證控件的錯誤信息RangeValidator檢查用戶的輸入是否在指定的上下限內(nèi)??梢詸z查數(shù)字對、字母字符對和日期對的范圍。邊界可以表示為常數(shù)或從其他控件導(dǎo)出的值3.3驗證控件-示例【例】打開VisualStudio.NET新建一個Web應(yīng)用程序項目,命名為Validator。向Web窗體中添加標(biāo)簽控件、輸入控件和驗證控件。依次放入5個標(biāo)簽控件,設(shè)定它們的Text屬性分別為“姓名”、“年齡”、“密碼”、“確認(rèn)密碼”和“E-mail”。在標(biāo)簽控件之后依次放入5個輸入框控件,它們的ID在默認(rèn)狀態(tài)下會自動設(shè)為TextBox1、TextBox2、TextBox3、TextBox4和TextBox5。設(shè)定TextBox3和TextBox4的TextMode屬性為Password。在TextBox1、TextBox2、TextBox4和TextBox5控件后分別放入一個RequiredFieldValidator驗證控件,分別將這些RequiredFieldValidatork控件的ErrMessage屬性設(shè)定為“姓名不能為空”、“年齡不能為空”、“密碼不能為空”和“E-mail不能為空”,ControlToValidate屬性分別設(shè)置為TextBox1、TextBox2、TextBox4和TextBox5。TextBox2后再放入一個RangeValidator驗證控件其ErrMessage屬性設(shè)為“值不合法”,ControlToValidate屬性設(shè)為TextBox2,MaximumValue屬性設(shè)為100,Minimum屬性設(shè)為1,Type屬性設(shè)為Integer。TextBox4后再放入一個CompareValidator控件,它的ErrMessage屬性設(shè)為“兩次輸入不一致”,ControlToCompare屬性設(shè)為TextBox3,ControlToValidtae屬性設(shè)為TextBox4。Text5后再放一個RegularExpressionValidator控件ErrMessage屬性設(shè)為“輸入不正確”,ControlToValidator屬性設(shè)為TextBox5,當(dāng)在屬性對話框選擇ValidationExpress屬性時會彈出【正則表達(dá)式編輯器】對話框,從中選擇【Internet電子郵件地址】最后向窗體中添加一個Button控件和一個ValidationSummary控件。3.3驗證控件-示例RequiredFieldValidator控件保證它所驗證控件的輸入不能為空RangeValidator控件保證了它所驗證控件的輸入應(yīng)在一定的范圍內(nèi)。在本例中保證在TextBox2中輸入為1到100之間的整型值。

CompareValidator控件將它驗證的控件的內(nèi)容與另一個控件或另一個值進(jìn)行比較,在本例中使用了ControlToCompare屬性,以此來表明需要與另一控件相比較,默認(rèn)的比較操作屬性O(shè)perator的值是Equal(相等),這樣該控件的功能其實就是保證兩次密碼輸入相等。RegularExpressionValidator保證控件的輸入應(yīng)滿足特定的正則表達(dá)式規(guī)則,本例指定為“Internet電子郵件地址”,即要求TextBox5中要輸入一個電子郵件地址。這些驗證控件的EnableClientScript現(xiàn)在都默認(rèn)為True,這就表明將生成瀏覽器腳本在客戶端進(jìn)行驗證。運(yùn)行程序,在驗證控件對應(yīng)的文本框中必須正確輸入,否則將會在驗證控件的位置出現(xiàn)錯誤信息,在ValidationSummary控件中則會顯示出所有這些錯誤信息CustomValidator控件提供了用戶自定義的功能,當(dāng)上面的驗證控件都無法滿足要求的時候就需要CustomValidator控件了。它提供了自定義客戶端與服務(wù)器端驗證的功能,它包含有一個ClientValidationFunction屬性和ServerValidate事件,可以分別與客戶端和服務(wù)器端進(jìn)行綁定,然后編寫滿足自己需要的驗證函數(shù)3.3驗證控件-驗證控件的使用

3.3驗證控件-正則表達(dá)式編輯器

3.3驗證控件-程序的運(yùn)行3.4用戶控件

當(dāng)ASP.NET提供的控件都無法滿足要求的時候就需要自己編寫控件了,這些控件叫做用戶控件??梢允褂脙煞N方式來創(chuàng)建用戶控件一種方式是把以前編寫的Web頁面包裝成控件,這樣的控件稱為Web用戶控件另一種方式是從.NET的某個框架類繼承一個新類用來生成控件,這樣的控件稱為Web自定義控件3.4用戶控件-Web用戶控件先來介紹第一種方式,下面創(chuàng)建一個Web窗體,然后把它轉(zhuǎn)化成Web用戶控件的形式,接著再創(chuàng)建一個新的Web窗體來使用這個控件。【例】新建一個ASP.NETWeb應(yīng)用程序,命名為MyControl,在窗體上放入一個標(biāo)簽控件、一個文本框控件和一個Button控件。雙擊Button控件將切換到代碼編輯對話框,在Button1_Click方法中填寫下列代碼:privatevoidButton1_Click(objectsender,System.EventArgse){//改變文本標(biāo)簽的內(nèi)容Label1.Text="Hello"+TextBox1.Text;}切換到Web窗體的HTML代碼對話框,將顯示出WebForm1.aspx文件的內(nèi)容?,F(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)在解決方案對話框中選中WebForm1.aspx,右擊選擇【重命名】,將WebForm1.aspx的名字改為WebForm1.ascx,這時文件WebForm1.aspx.cs也會自動更名為WebForm1.ascx.cs。將WebForm1.ascx.cs中的publicclassWebForm1:System.Web.UI.Page一行改為publicclassWebForm1:System.Web.UI.UserControl(4)保存項目,Web用戶控件就完成了。這個Web用戶控件只實現(xiàn)了很簡單的功能。為使一個Web對話框變?yōu)榭丶仨毷紫葘⑵渲械捻撁嬖貏h除,其次由于Web用戶控件的擴(kuò)展名為ascx,因此也要將aspx擴(kuò)展名變?yōu)閍scx,最后Web用戶控件應(yīng)由用戶控件類派生。下面用一個新的Web應(yīng)用程序項目來測試一下剛才生成的Web用戶控件。新建一個ASP.NETWeb應(yīng)用程序,命名為UserControl。在解決方案資源管理器對話框內(nèi)的UserControl項上右擊,選擇【添加現(xiàn)有項】,彈出【添加現(xiàn)有項】對話框,文件類型中選擇【公用Web文件】,定位到MyControl目錄選定WebForm1.ascx,單擊【打開】按鈕。添加MyControl引用這時就把Web用戶控件添加到了UserControl項目中,在解決方案資源管理器內(nèi)單擊WebForm1.ascx,把它拖動到Web對話框中。Web對話框中就會出現(xiàn)剛才新建的Web用戶控件由于現(xiàn)在的控件沒有設(shè)計器的支持,因此在設(shè)計對話框中沒有顯示出Web用戶控件的顯示界面。執(zhí)行這個項目,在文本框內(nèi)輸入“maj”,單擊按鈕,這時標(biāo)簽中就會顯示出“Hellomaj”。整個頁面的功能其實都是由一個Web用戶控件提供的??梢詫⒏鼜?fù)雜的窗體組合在一起做成Web用戶控件,使用在項目里以達(dá)到代碼重用的目的3.4用戶控件-添加現(xiàn)有項對話框

3.4用戶控件-向窗體中添加Web用戶控件3.4用戶控件-使用Web用戶控件

3.4用戶控件-Web自定義控件

Web自定義控件是一種更方便、功能更強(qiáng)大的設(shè)置用戶控件的方式。它最終將編譯成DLL文件,可以方便地進(jìn)行發(fā)布。【例】新建一個項目,在右側(cè)【模板】欄內(nèi)選擇【W(wǎng)eb控件庫】,將項目名稱改為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)前時間protectedoverridevoidRender(HtmlTextWriteroutput){output.Write(DateTime.Now.ToString());}}}3.4用戶控件-Web自定義控件

上面的代碼實現(xiàn)了一個顯示出當(dāng)前時間的控件。當(dāng)控件呈現(xiàn)在頁面上時會調(diào)用Render方法,本例中當(dāng)前的時間就是在Render方法中輸出的。這個控件沒有公開任何的屬性和事件。保存項目,選擇【生成】|【生成MyCustomControl】命令,這將會在該項目對應(yīng)目錄的bin\Debug子目錄下生成名為MyCustomControl.dll的文件。這樣這個簡單的Web自定義控件就生成了?,F(xiàn)在演示如何使用這個控件。新建一個ASP.NETWeb應(yīng)用程序項目,命名為UseCustomControl。下一步要把新建的控件加入到工具箱內(nèi),選擇【工具】|【選擇工具箱】命令單擊【瀏覽】按鈕,在彈出的對話框中選定CustomControl項目所在目錄,選定文件CustomControl.dll,單擊【確定】按鈕。這樣在Web的工具箱中就會出現(xiàn)一個新的控件。選定該控件并把它添加到窗體上。執(zhí)行這個項目。在瀏覽器中顯示出了當(dāng)前的時間。例子雖然簡單但是卻演示了Web自定義控件的基本生成方法,生成用戶自定義控件的過程都是一致的,如果綜合運(yùn)用.NET的類庫就可以實現(xiàn)更加復(fù)雜的自定義控件。如果想使控件設(shè)計時更加美觀,可以將System.Design.dll引用到項目里,并從System.Web.UI.Design.ControlDesigner繼承一個新類,實現(xiàn)該類的GetDesignTimeHtml方法,并把它加入到自定義控件的屬性聲明中,這樣就可像普通Web服務(wù)器控件一樣在設(shè)計階段就可以顯示出外觀3.4用戶控件

向工具箱中添加控件

3.4用戶控件

添加到工具箱中的用戶自定義控件

3.4用戶控件

用戶自定義控件的使用

4創(chuàng)建Web服務(wù)4.1Web服務(wù)

4.2一個簡單的Web服務(wù)

4.3使用Web服務(wù)訪問數(shù)據(jù)庫4.1Web服務(wù)

Web服務(wù)提供了一種調(diào)用網(wǎng)絡(luò)應(yīng)用的新方法,剛一出現(xiàn)就表現(xiàn)出了極大的生命力,它也許會帶來網(wǎng)絡(luò)應(yīng)用程序的重大變革在Internet的發(fā)展中,如何使各種應(yīng)用系統(tǒng)有效集成一直是一個令人頭痛的問題。使用不同技術(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一個簡單的Web服務(wù)

下面來創(chuàng)建一個簡單的Web服務(wù)來演示它的基本組成。【例】VisualStudio.NET為Web服務(wù)提供了強(qiáng)大的支持,借助它可以方便地進(jìn)行Web服務(wù)的開發(fā)。打開VisualStudio.NET,新建項目,在項目模板中選擇【ASP.NETWeb服務(wù)】,命名為MyWebService。這時將出現(xiàn)設(shè)計對話框,現(xiàn)在切換到代碼編輯對話框,按下面的程序改變對話框中的代碼。usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web.Services;namespaceMyWebService{///Service1的摘要說明///</summary>///4.2一個簡單的Web服務(wù)

//設(shè)定該Web服務(wù)的命名空間[WebService(Namespace="/")]publicclassService1:System.Web.Services.WebService{publicService1(){//CODEGEN:該調(diào)用是ASP.NETWeb服務(wù)設(shè)計器所必需的InitializeComponent();}#regionComponentDesignergeneratedcode//Web服務(wù)設(shè)計器所必需的privateIContainercomponents=null;///<summary>///設(shè)計器支持所需的方法-不要使用代碼編輯器修改///此方法的內(nèi)容。///</summary>privatevoidInitializeComponent(){}///<summary>///清理所有正在使用的資源///</summary>protectedoverridevoidDispose(booldisposing){if(disposing&&components!=null){components.Dispose();}base.Dispose(disposing); }4.2一個簡單的Web服務(wù)

#endregion//WEB服務(wù)示例//HelloWorld()示例服務(wù)返回字符串HelloWorld//若要生成,請取消注釋下列行,然后保存并生成項目//若要測試此Web服務(wù),請按F5鍵//實現(xiàn)兩個數(shù)相加的Web服務(wù)[WebMethod]publicintAdd(intfirstnumber,intsecondnumber){returnfirstnumber+secondnumber;}}}這樣就實現(xiàn)了一個簡單的Web服務(wù),它只提供了一項功能,計算兩個整數(shù)的和。現(xiàn)在運(yùn)行程序來測試這個Web服務(wù)。不過要注意Web服務(wù)并不是在運(yùn)行后的瀏覽器對話框中顯示的這樣,它本身只是提供給用戶的服務(wù),這里看到的只是ASP.NET提供的一個方便的測試界面。4.2一個簡單的Web服務(wù)

測試Web服務(wù)

4.2一個簡單的Web服務(wù)

在類Service1上加入一行[WebService(Namespace="/")]表明該Web服務(wù)的命名空間,它用來和其他Web服務(wù)相區(qū)別。下面的Add方法上的[WebMethod]表明這是一個Web方法,這個方法的功能很簡單,只是將傳入的兩個數(shù)相加并返回結(jié)果。上面在瀏覽器中測試的就是該方法。4.2一個簡單的Web服務(wù)

測試Add方法

4.2一個簡單的Web服務(wù)

Web服務(wù)調(diào)用結(jié)果

4.3使用Web服務(wù)訪問數(shù)據(jù)庫

下面結(jié)合使用ADO.NET創(chuàng)建一個可訪問數(shù)據(jù)庫的Web服務(wù),同時編寫一個客戶端程序,用來調(diào)用這個Web服務(wù)?!纠啃陆椖?,在【模板】中選擇【ASP.NETWeb服務(wù)】,將該項目命名為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è)計器所必需的InitializeComponent();}4.3使用Web服務(wù)訪問數(shù)據(jù)庫

#regionComponentDesignergeneratedcode//Web服務(wù)設(shè)計器所必需的privateIContainercomponents=null;///<summary>///設(shè)計器支持所需的方法-不要使用代碼編輯器修改此方法的內(nèi)容///</summary>privatevoidInitializeComponent(){}///<summary>///清理所有正在使用的資源///</summary>protectedoverridevoidDispose(booldisposing){if(disposing&&components!=null){components.Dispose();}base.Dispose(disposing); }4.3使用Web服務(wù)訪問數(shù)據(jù)庫

#endregion//建立一個sqlConnection連接SQLServer數(shù)據(jù)庫publicSqlConnectionmyConn=newSqlConnection("DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind");[WebMethod]publicDataSetGetDataSet(){//建立一個sqlDataAdapter取得products表內(nèi)容Sql

溫馨提示

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

評論

0/150

提交評論