ASPNET程序設(shè)計教程第10章-高級應(yīng)用課件_第1頁
ASPNET程序設(shè)計教程第10章-高級應(yīng)用課件_第2頁
ASPNET程序設(shè)計教程第10章-高級應(yīng)用課件_第3頁
ASPNET程序設(shè)計教程第10章-高級應(yīng)用課件_第4頁
ASPNET程序設(shè)計教程第10章-高級應(yīng)用課件_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第10章 高級應(yīng)用10.1 驗證控件10.2 用JavaScript處理頁面和服務(wù)器控件10.3 用戶控件10.4 XML的應(yīng)用10.5 Web Service10.6 ASP.NET配置10.7 性能優(yōu)化10.8 程序調(diào)試與異常處理10.9 ASP.NET AJAX10.1 驗證控件ASP.NET的6個驗證控件列于表10.1中??丶?能CompareValidator將輸入控件的值同常數(shù)值或其他輸入控件的值相比較,以確定這兩個值是否與由比較運算符(小于、等于、大于等)指定的關(guān)系相匹配。RangeValidator檢查用戶的輸入是否在一個特定的范圍內(nèi)。RegularExpressionVa

2、lidator檢查用戶的輸入是否與正則表達式所定義的模式匹配。RequiredFieldValidator檢查用戶是否在輸入控件中輸入了數(shù)據(jù)。CustomValidator通過用戶自定義函數(shù)判定輸入的數(shù)據(jù)是否有效。 ValidationSummary顯示頁面上所有驗證控件所搜索到的驗證錯誤。10.1 驗證控件這6個控件各有其特定的功能,具有各自的屬性,但它們都具有一些共同的屬性,表10.2列出了它們共有的主要屬性。屬 性說 明ControlToValidate指定需要驗證的控件名。Display指定驗證控件的顯示方式??扇∠铝兄抵唬?None驗證控件的內(nèi)容不再控件位置上顯示,而在 Valid

3、ationSummary 控件中顯示錯誤信息。Static無論驗證結(jié)果如何,驗證控件的內(nèi)容總要占據(jù)頁面空間。Dynamic如果驗證失敗,驗證控件顯示錯誤信息。而當(dāng)驗證無錯誤時,驗證控件內(nèi)容不占據(jù)頁面空間。EnableClientScript指示是否啟用客戶端驗證。通過將 EnableClientScript 屬性設(shè)置為 false,可在支持此功能的瀏覽器上禁用客戶端驗證。Enabled指示是否啟用驗證控件。默認(rèn)為True(啟用)。ErrorMessage當(dāng)驗證失敗時在 ValidationSummary 控件中顯示的錯誤信息。 ForeColor指定當(dāng)驗證失敗時用于顯示內(nèi)聯(lián)消息的顏色。IsVa

4、lid返回 ControlToValidate 屬性所指定的輸入控件是否通過驗證,通過為True,不通過為False。該屬性只能在編程時使用。Text若設(shè)置該屬性,則驗證失敗時會在驗證控件中顯示Text屬性定義的消息。如果未設(shè)置此屬性,則在控件中顯示ErrorMessage屬性中指定的文本。SetFocusOnError將頁面的焦點放置在產(chǎn)生錯誤的控件,讓用戶更容易地修訂輸入。如果頁面上有多個驗證控件,并且多個驗證控件報告驗證失敗,則頁面上第一個失敗的驗證控件接收焦點。10.1.1 客戶端驗證和服務(wù)端驗證對于驗證中的事件序列,有兩種情況:若客戶端支持JScript且驗證控件的EnableCli

5、entScript=true,則在客戶端和服務(wù)器上執(zhí)行驗證。如果上面兩個條件的任何一個不滿足,則只在服務(wù)器上執(zhí)行驗證。10.1.2 RequiredFieldValidator控件RequiredFieldValidator控件的語法:10.1.2 RequiredFieldValidator控件【例10.1】RequiredFieldValidator驗證控件示例。網(wǎng)頁啟動后顯示如圖10.1所示的數(shù)據(jù)輸入界面,若在“用戶名”和“密碼”框中不輸入字符,則給出相應(yīng)的驗證出錯提示,如圖10.2所示。 10.1.2 RequiredFieldValidator控件設(shè)計步驟如下:(1) 新建一個網(wǎng)站“

6、WebSite10”,在此網(wǎng)站中添加一個Web窗體頁“Ex10-1.aspx”。(2) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:請輸入用戶名和密碼:(3) 在此頁面中添加2個TextBox、2個RequiredFieldValidator和1個Button控件,控件的屬性設(shè)置如表10.3所示??丶悇eID其他屬性其他屬性值說明TextBoxUserNameText輸入用戶名用于輸入用戶名Pass用于輸入密碼RequiredFieldValidatorRequiredFieldValidator1ErrorMessage、ControlToValidate、InitiaValue您必須填寫用

7、戶名、UserName、輸入用戶名檢測是否輸入用戶名RequiredFieldValidator2ErrorMessage、ControlToValidate您必須填寫密碼、Pass檢測是否輸入密碼ButtonButton1Text確定提交數(shù)據(jù)10.1.2 RequiredFieldValidator控件在“源”視圖下,生成的主要代碼如下: 姓名:輸入用戶名 密碼: 10.1.3 CompareValidator控件CompareValidator控件的語法:10.1.3 CompareValidator控件CompareValidator控件特有的屬性有以下4個:ValueToCompare

8、屬性:獲取或設(shè)置用來比較的常量。ControlToCompare屬性:獲取或設(shè)置與ControlToValidate屬性所指定的控件進行比較的控件的標(biāo)識。注意:通常不同時設(shè)置ControlToCompare屬性和ValueToCompare屬性;如果同時設(shè)置了這兩個屬性,則ControlToCompare屬性優(yōu)先。Type屬性:獲取或設(shè)置用來比較的數(shù)據(jù)的類型(貨幣、日期、雙精度浮點型、整型、字符串),默認(rèn)為String。在進行比較之前,用戶輸入的數(shù)據(jù)將先被轉(zhuǎn)換為指定的類型。Operator屬性:獲取或設(shè)置比較運算符(等于、不等于、大于、大于等于、小于、小于等于、數(shù)據(jù)類型檢查),默認(rèn)值為Equa

9、l。10.1.3 CompareValidator控件表10.4列出了可能的比較操作。操 作說 明Equal 所驗證的輸入控件的值與其他控件的值或常數(shù)值之間的相等比較。NotEqual 所驗證的輸入控件的值與其他控件的值或常數(shù)值之間的不相等比較。GreaterThan 所驗證的輸入控件的值與其他控件的值或常數(shù)值之間的大于比較。GreaterThanEqual 所驗證的輸入控件的值與其他控件的值或常數(shù)值之間的大于或等于比較。LessThan 所驗證的輸入控件的值與其他控件的值或常數(shù)值之間的小于比較。LessThanEqual 所驗證的輸入控件的值與其他控件的值或常數(shù)值之間的小于或等于比較。Dat

10、aTypeCheck 輸入到所驗證的輸入控件的值與BaseCompareValidator.Type 屬性指定的數(shù)據(jù)類型之間的數(shù)據(jù)類型比較。如果無法將該值轉(zhuǎn)換為指定的數(shù)據(jù)類型,則驗證失敗。使用此運算符時,將忽略ControlToCompare和ValueToCompare屬性。10.1.3 CompareValidator控件【例10.2】CompareValidator驗證控件示例。網(wǎng)頁啟動后顯示如圖10.3所示的數(shù)據(jù)輸入界面;若在“年齡”框中輸入200,在“工資收入”或“稿費等收入”中輸入大于“總收入”框中值時,則給出相應(yīng)的驗證出錯提示,如圖10.4所示。 10.1.3 CompareVa

11、lidator控件設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁面“Ex10-2.aspx”。(2) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:請輸入如下信息(3) 在頁面中添加5個TextBox、3個CompareValidator和1個Button控件。10.1.3 CompareValidator控件在“源”視圖下,生成的主要代碼如下:用戶名:輸入用戶名年齡:總收入:工資收入: 稿費等收入: 10.1.4 RangeValidator控件RangeValidator控件的語法:RangeValidator控件特有的屬性有以下2個:MinimumValue屬性和Ma

12、ximumValue屬性:分別指定有效范圍的最小值和最大值。Type屬性:用于指定要比較的值的數(shù)據(jù)類型,其含義與CompareValidator控件的Type屬性相同。10.1.4 RangeValidator控件【例10.3】RangeValidator驗證控件示例。網(wǎng)頁啟動后顯示如圖10.5所示的數(shù)據(jù)輸入界面;若在文本框中輸入“-10”,則給出相應(yīng)的驗證出錯提示,如圖10.6所示。 10.1.4 RangeValidator控件設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁面“Ex10-3.aspx”。(2) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:請輸入如下信息

13、(3) 在頁面中添加一個TextBox控件、一個RangeValidator控件和一個Button控件。TextBox控件的ID設(shè)置為“mark”;RangeValidator控件的ControlToValidate、ErrorMessage、MaximumValue、MinimumValue和Type分別設(shè)置為“mark”、“成績必須在0100之間”、“100”、“0”和“Integer”;Button控件的Text屬性設(shè)置為“確定”。在“源”視圖下,生成的主要代碼如下:請輸入成績:10.1.5 RegularExpressionValidator控件RegularExpressionVal

14、idator控件的語法:10.1.5 RegularExpressionValidator控件ValidationExpression屬性值指定輸入格式時可使用的格式符列于表10.5中。格式符號含 義.表示可接受除空格以外的任何字符。常和、等格式符號結(jié)合使用。 表示只能接受其中指定的字符。例如,a-z表示可接受小寫英文字母;0-z表示可接受數(shù)字09和小寫英文字母;abc表示可接受a,b,c這三個英文字母。指定需輸入的字符個數(shù)。例如,3表示必須輸入3個字符;3,6表示必須輸入36個字符;3,表示必須至少輸入3個字符,再多不限。表示“除以外的字符”。例如,0-9表示可接受除09之外的所有字符。|表

15、示“或”。例如,a-z3|A-Z3表示必須輸入3個小寫英文字母或者3個大寫英文字母(二者必居其一,而不能是3個大小寫字母混寫)。+表示至少要有一個符合的字符,相當(dāng)于1,。例如,a-z+表示必須至少輸入一個小寫英文字母。*表示可有0個或多個符合的字符,相當(dāng)于0,。(? : )用于判斷用戶輸入是否符合其括號中指定的符號串,常與“|”格式符合結(jié)合使用。例如,(?Green | Black | Milk)Tea表示當(dāng)用戶輸入GreenTea、BlackTea或MilkTea時都接受。轉(zhuǎn)義符,用于指定輸入字符必須為格式符號的情況。例如,(0-9)表示必須輸入用小括號括起的數(shù)字,如(8)。10.1.5 R

16、egularExpressionValidator控件【例10.4】RegularExpressionValidator驗證控件示例。結(jié)合RequiredFieldValidator控件,要求用戶必須輸入數(shù)據(jù)才能進入對輸入數(shù)據(jù)格式的驗證。網(wǎng)頁啟動后,若用戶未在文本框中輸入任何數(shù)據(jù),則顯示如圖10.7所示的驗證提示頁面。10.1.5 RegularExpressionValidator控件若在文本框中輸入不符合規(guī)則的數(shù)據(jù),則給出相應(yīng)的驗證出錯提示,如圖10.8所示。10.1.5 RegularExpressionValidator控件設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web

17、窗體頁面“Ex10-4.aspx”。(2) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:請輸入如下信息(3) 在頁面中添加2個TextBox控件、2個RequiredFieldValidator驗證控件、2個RegularExpressionValidator驗證控件和1個Button控件。10.1.5 RegularExpressionValidator控件在“源”視圖下,生成的主要代碼如下:請輸入電話號碼:asp:RegularExpressionValidator ID=RegularExpressionValidator1 runat=server ControlToValidate=

18、telephone ErrorMessage=電話號碼必須是812個數(shù)字 請輸入電子郵件地址: 10.1.6 CustomValidator控件CustomValidator控件的語法:CustomValidator控件特有的屬性有以下2個:ClientValidationFunction:獲取或設(shè)置用于驗證的函數(shù),該函數(shù)必須是客戶端自定義函數(shù)。該函數(shù)在表單數(shù)據(jù)被提交到服務(wù)器之前在瀏覽器中執(zhí)行。OnServerValidate:是一個服務(wù)器事件,當(dāng)CustomValidator控件被執(zhí)行時將觸發(fā)該事件。它指定在服務(wù)器上執(zhí)行的函數(shù)或過程,數(shù)據(jù)被提交到服務(wù)器后才進行驗證。10.1.6 Custom

19、Validator控件【例10.5】CustomValidator控件示例。網(wǎng)頁啟動后顯示如圖10.9所示的數(shù)據(jù)輸入界面,要求輸入能被5整除的整數(shù);若在文本框中輸入78,則給出相應(yīng)的驗證出錯提示,如圖10.10所示。本例使用OnServerValidate屬性指定在服務(wù)器上執(zhí)行的驗證處理過程。 10.1.6 CustomValidator控件設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁面“Ex10-5.aspx”。(2) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:請輸入如下信息(3) 在頁面中添加一個TextBox控件、一個CustomValidator控件和一個Bu

20、tton控件。TextBox控件的ID設(shè)置為“num”;CustomValidator控件的ControlToValidate設(shè)置為“num”,ErrorMessage設(shè)置為“您輸入的數(shù)不能被5整除”;Button控件的Text屬性設(shè)置為“確定”。(4) 添加CustomValidator控件的ServerValidate事件處理程序,代碼如下:Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args _As System.Web.UI.WebControls.ServerValidateE

21、ventArgs) Handles CustomValidator1.ServerValidate args.IsValid = (args.Value Mod 5) = 0) End Sub10.1.6 CustomValidator控件在“源”視圖下,生成的主要代碼如下:請輸入一個能被5整除的整數(shù):10.1.7 ValidationSummary控件ValidationSummary控件的語法:ValidationSummary控件的主要屬性如下:DisplayMode:獲取或設(shè)置ValidationSummary控件的顯示格式,其取值見表10.6。取 值說 明BulletList顯示在項

22、目符號列表中的驗證摘要。此為默認(rèn)值。List顯示在列表中的驗證摘要。SingleParagraph顯示在單個段落內(nèi)的驗證摘要。10.1.7 ValidationSummary控件HeaderText:獲取或設(shè)置ValidationSummary控件的標(biāo)題。ShowSummary:獲取或設(shè)置是否在網(wǎng)頁上顯示驗證摘要。默認(rèn)為True。ShowMessageBox:獲取或設(shè)置是否已對話框形式來顯示驗證錯誤信息,默認(rèn)為False。EnableClientScript:獲取或設(shè)置ValidationSummary控件是否啟用客戶端腳本來更新自己的狀態(tài),默認(rèn)為True。10.1.7 ValidationS

23、ummary控件【例10.6】ValidationSummary控件示例。網(wǎng)頁啟動后顯示如圖10.11所示的數(shù)據(jù)輸入界面,若輸入未通過驗證,則給出相應(yīng)的驗證出錯提示,如圖10.12所示。 10.1.7 ValidationSummary控件設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁面“Ex10-6.aspx”。(2) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:請輸入如下信息(3) 在頁面中添加3個TextBox、1個RequiredFieldValidator、1個CompareValidator、1個RangeValidator、1個ValidationSumma

24、ry和一個Button控件。3個TextBox控件的ID分別設(shè)置為“num”、“Pass1”、“Pass2”和“Age”。10.1.7 ValidationSummary控件在“源”視圖下,生成的主要代碼如下:姓名:密碼: 再輸入一次密碼: 年齡: 10.1.8 關(guān)閉客戶端驗證功能關(guān)閉客戶端驗證功能有兩種方式:(1)用編程方式刪除驗證控件的客戶端驗證功能,例如在Page_load事件中關(guān)閉頁面上所有驗證控件的客戶端腳本功能,如果要動態(tài)地確定不允許進行客戶端驗證,使用此方法比較好。如下列代碼所示: Protected Sub Page_Load(ByVal sender As Object, B

25、yVal e As System.EventArgs) Handles Me.Load Dim Validator As BaseValidator For Each Validator In Page.Validators Validator.EnableClientScript = False Next End Sub 10.1.8 關(guān)閉客戶端驗證功能(2)設(shè)置驗證服務(wù)器控件的EnableClientScript屬性為Flase,從而阻止控件發(fā)送在客戶機上執(zhí)行驗證的JavaScript函數(shù),使驗證檢查在服務(wù)器上進行。該屬性默認(rèn)為True。此屬性的用法如下:10.2 用JavaScript處

26、理頁面和服務(wù)器控件10.2.1 在控件上直接應(yīng)用JavaScript把JavaScript直接應(yīng)用于ASP.NET頁面上的控件。例如,下列代碼中的TextBox服務(wù)器控件上顯示了當(dāng)前的日期和時間。Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadTextBox1.Text = DateTime.Now.ToString()End Sub10.2.1 在控件上直接應(yīng)用JavaScript如果希望該時間對于瀏覽站點的任何人來說都是正確的,無論他們在世界的哪個角落,就

27、可以使用JavaScript處理TextBox控件,代碼如下: 10.2.2 使用Page.ClientScript屬性1. 使用Page.ClientScript.RegisterClientScriptBlockRegisterClientScriptBlock方法可以把JavaScript函數(shù)放在頁面的頂部。也就是說,該腳本用于在瀏覽器中啟動頁面。其用法如下列代碼所示。 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)Dim myScript As String = function

28、AlertHello() alert(Hello ASP.NET); Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), MyScript, myScript, True) End Sub注冊JavaScript 10.2.2 使用Page.ClientScript屬性RegisterClientScriptBlock方法的兩個構(gòu)建方式如下:RegisterClientScriptBlock (type,key,script)RegisterClientScriptBlock (type,key,script,script tag

29、 specification)把類型指定為Me.GetType(),還指定了鍵、要包含的腳本,然后是一個設(shè)置為True的Boolean值,這樣.NET就自動把腳本放在ASP.NET頁面上的標(biāo)記中。在運行頁面時,可以查看頁面的源代碼,代碼所示。10.2.2 使用Page.ClientScript屬性2. 使用Page.ClientScript.RegisterStartupScriptRegisterStartupScript方法與RegisterClientScriptBlock方法的區(qū)別不大。最大的區(qū)別是RegisterStartupScript把腳本放在ASP.NET頁面的底部,而不是頂部

30、。實際上,RegisterStartup Script方法甚至使用與RegisterClientScriptBlock方法相同的構(gòu)造函數(shù):RegisterStartupScript (type,key,script)RegisterStartupScript (type,key,script,script tag specification)這兩種方法在頁面上注冊腳本的過程有很大的區(qū)別:如果在頁面上有一些處理控件的JavaScript,在大多數(shù)情況下應(yīng)使用RegisterStartupScript方法,而不是RegisterClientScriptBlock方法。例如,應(yīng)使用下面的代碼創(chuàng)建一個

31、包含控件的頁面,該控件包含默認(rèn)值Hello ASP.NET:Hello ASP.NET10.2.2 使用Page.ClientScript屬性然后使用RegisterClientScriptBlock方法把腳本放在頁面上,利用TextBox1控件中的值,如下列代碼所示:Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim myScript As String = alert(document.forms0TextBox1.value); Page.Clie

32、ntScript.RegisterClientScriptBlock(Me.GetType(), MyScript, myScript, True)End Sub運行這個頁面,會產(chǎn)生一個JavaScript錯誤,出錯的原因是JavaScript函數(shù)在文本框放置在屏幕之前觸發(fā)。所以,JavaScript函數(shù)沒有找到TextBox1,導(dǎo)致頁面拋出一個錯誤?,F(xiàn)在試用RegisterStartupScript方法,代碼如下:Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Lo

33、ad Dim myScript As String = alert(document.forms0TextBox1.value); Page.ClientScript.RegisterStartupScript(Me.GetType(), MyScript, myScript, True)End Sub10.2.2 使用Page.ClientScript屬性3. 使用Page.ClientScript.RegisterClientScriptInclude許多開發(fā)人員都把JavaScript放在.js文件中,這是最好的方式,因為很容易把對JavaScript的修改應(yīng)用于整個應(yīng)用程序。使用Reg

34、isterClientScriptInclude方法可以在ASP.NET頁面上注冊腳本文件,如下列代碼所示:使用RegisterClientScriptInclude方法:string myScript = myJavaScriptCode.jsPage.ClientScript.RegisterClientScriptInclude(myKey,myScript);這會在ASP.NET頁面上創(chuàng)建如下代碼:10.2.2 使用Page.ClientScript屬性【例10.7】使用Page.ClientScript.RegisterClientScriptInclude方法處理頁面和服務(wù)器控件,

35、如圖10.13所示,當(dāng)單擊Button按鈕控件后彈出對話框,顯示TextBox控件的內(nèi)容。10.2.2 使用Page.ClientScript屬性設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁面“Ex10-7.aspx”。(2) 在此頁面中添加一個Button控件和一個TextBox控件,Button的onclientclick屬性設(shè)置為“AlertHello()”,TextBox控件的Text設(shè)置為“Hello,ASP.NET”。(3) 在解決方案資源管理器中右擊網(wǎng)站名“WebSite10”,選擇“添加新項”,在彈出的“添加新項”對話框中選擇“JScript文件”模板,

36、并命名為“myJavaScriptCode.js”。(4) 在myJavaScriptCode.js文件中添加如下代碼:function AlertHello()alert(document.forms0TextBox1.value);10.3 用戶控件10.3.1 創(chuàng)建用戶控件創(chuàng)建用戶控件的方法與設(shè)計ASP.NET網(wǎng)頁類似,只要放入所需的數(shù)據(jù)或控件,以及相應(yīng)的程序代碼即可。以下是一個創(chuàng)建用戶控件的示例: | | |將以上代碼存入文件menu.ascx。10.3.2 將用戶控件添加到ASP.NET網(wǎng)頁注冊用戶控件的語法:上述指令包含以下三個屬性:TagPrefix:設(shè)置用戶控件的標(biāo)記前綴,該前

37、綴類似于Web控件的Asp前綴。例如,若注冊用戶控件的標(biāo)記前綴為ucl,則在引用該用戶控件的ASP.NET網(wǎng)頁中就以“ucl:”來引用該用戶控件,就象使用“Asp:”引用Web用戶控件一樣。TagName:設(shè)置用戶控件的名稱。Src:設(shè)置用戶控件文件的路徑。10.3.2 將用戶控件添加到ASP.NET網(wǎng)頁將用戶控件加入到ASP.NET網(wǎng)頁的語法:【例10.8】用戶控件示例。將menu.ascx用戶控件加入到ASP.NET網(wǎng)頁,網(wǎng)頁啟動后顯示如圖10.14所示的界面。10.3.2 將用戶控件添加到ASP.NET網(wǎng)頁設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁面“Ex10-

38、8.aspx”。(2) 在資源管理器中選中“menu.ascx”文件并將其拖放到Ex10-8.aspx頁面中。打開“源”視圖,源程序如下: 10.4 XML的應(yīng)用10.4.1 讀取XML文檔【例10.9】 讀取XML文檔示例。將例1.10所創(chuàng)建的person.xml文檔的內(nèi)容讀入到DataSet中,并用GridView控件顯示出來,如圖10.15所示。10.4.1 讀取XML文檔設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁面“Ex10-9.aspx”,并在此頁面中添加一個GridView控件。(2) 在網(wǎng)站W(wǎng)ebSite10中添加一個XML文件,XML文件內(nèi)容見例1.1

39、0所示,命名為“person.xml”。(3) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:人員信息表10.4.1 讀取XML文檔(4) 切換到“設(shè)計”視圖下,雙擊頁面空白處,添加命名空間和Page的Load事件處理程序。命名空間如下:Imports System.DataPage的Load事件處理代碼如下: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim DS As New DataSet() 創(chuàng)建DataSet對象 DS.ReadXml(Serv

40、er.MapPath(person.xml) 讀取XML文檔 GridView1.DataSource = DS.Tables(0).DefaultView GridView1.DataBind() End Sub10.4.2 寫入XML文檔【例10.10】寫入XML文檔示例。把XSCJ.mdf數(shù)據(jù)庫的XS表的數(shù)據(jù)保存到一個名為xs.xml的XML文檔中,同時在DataGrid中顯示該表所有數(shù)據(jù),如圖10.16所示。10.4.2 寫入XML文檔設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁面“Ex10-10.aspx”,并在此頁面中添加一個GridView控件。(2) 在

41、網(wǎng)站W(wǎng)ebSite10中添加一個XML文件,命名為“XS.xml”。(3) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:學(xué)生信息表(4) 切換到“設(shè)計”視圖下,雙擊頁面空白處,添加命名空間和Page的Load事件處理程序。命名空間如下:Imports System.DataImports System.Data.SqlClient10.4.2 寫入XML文檔Page的Load事件處理代碼如下:源程序如下: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadDim

42、 connstr As Stringconnstr = Data Source =.SQLEXPRESS;Initial Catalog=XSCJ;Integrated Security=True;Pooling=FalseDim DTAdpt As SqlDataAdapter = New SqlDataAdapter(Select * from XS, connstr)Dim DS As DataSet = New DataSet() 創(chuàng)建DataSet對象DTAdpt.Fill(DS, XS) 調(diào)用WriteXml方法將DS中的數(shù)據(jù)寫入當(dāng)前目錄的XS.xml文件DS.WriteXml(S

43、erver.MapPath(XS.xml)GridView1.DataSource = DSGridView1.DataMember = XSGridView1.DataBind()End Sub使用記事本打開XS.xml文件,內(nèi)容顯示。10.4.3 基于XML的新聞系統(tǒng)1. XML文件設(shè)計新聞系統(tǒng)中使用兩類XML文件,一類是存儲新聞的XML文件,每條新聞存儲于一個XML文件中;另一類是新聞索引文件,存儲所有新聞的索引信息。新聞索引文件名定義為“index.xml”,每條新聞的文件名由新聞發(fā)布時管理員輸入。(1) index文件結(jié)構(gòu)index.xml的示例如下: 測試新聞 content.as

44、px?id=test 10.4.3 基于XML的新聞系統(tǒng)(2) 新聞存儲文件結(jié)構(gòu)下面是一個新聞存儲文件示例,文件名為“test.xml”: 測試新聞 admin 2010-3-10 歡迎訪問本站! 這是一則測試新聞 10.4.3 基于XML的新聞系統(tǒng)2. 新聞發(fā)布新聞發(fā)布界面如圖10.17所示。當(dāng)填寫了各個文本框的內(nèi)容并點擊“發(fā)布”按鈕后,數(shù)據(jù)將被修改和保存,并返回如圖10.18所示的頁面。 10.4.3 基于XML的新聞系統(tǒng)設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web窗體頁“distribute.aspx”。(2) 在“源”視圖下,在DIV標(biāo)記中添加如下代碼:新聞發(fā)布系統(tǒng)(

45、3) 在頁面中添加4個TextBox和1個Button控件,4個TextBox控件的ID分別為“title”、“author”、“filename”和“content”,ID為content的TextMode設(shè)置為“MultiLine”;Button控件的Text設(shè)置為“發(fā)布”。(4) 在代碼頁中添加命名空間和Button控件的Click事件處理程序。命名空間如下:Imports System.XmlImports SystemImports System.IOButton控件的Click事件處理程序的代碼。10.4.3 基于XML的新聞系統(tǒng)3. 新聞瀏覽新聞瀏覽界面如圖10.19所示。10.

46、4.3 基于XML的新聞系統(tǒng)(1) viewnews.htm:框架網(wǎng)頁文件。它將瀏覽器顯示區(qū)劃分為左右兩個區(qū)域,左邊區(qū)域?qū)⒂蓆itle.aspx程序列出各新聞標(biāo)題,右邊區(qū)域?qū)⒂蒫ontent.aspx程序顯示所選定的新聞信息。viewnews.html文件內(nèi)容如下: 10.4.3 基于XML的新聞系統(tǒng)(2) title.aspx:讀取index.xml文件中的新聞索引記錄,用GridView控件顯示每條新聞的標(biāo)題,并設(shè)置到相應(yīng)新聞的超鏈接。頁面title.aspx的設(shè)置方法如下: 在此頁面的“源”視圖下,在DIV中添加如下代碼: 新聞列表 在此頁面中添加一個GridView控件。將其ID設(shè)置為

47、“newsDataGrid”,GridView的AutoGenerateColumns、HorizontalAlign、BackColor、Font-Bold、Font-Size和ForeColor屬性分別設(shè)置為“False”、“Center”、“#990000”、“True”、“Small”和“#FFFFCC”。10.4.3 基于XML的新聞系統(tǒng)不選中“自動生成字段”復(fù)選框,如圖10.20所示。10.4.3 基于XML的新聞系統(tǒng) 添加如下命名空間:Imports System.Data 添加Page的Load事件處理程序,代碼如下:Protected Sub Page_Load(ByVal

48、sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim DS As New DataSet() 創(chuàng)建DataSet對象 DS.ReadXml(Server.MapPath(index.xml) 讀取索引文件XML文檔 newsDataGrid.DataSource = DS.Tables(0).DefaultView newsDataGrid.DataBind()End Sub10.4.3 基于XML的新聞系統(tǒng)(3) content.aspx:根據(jù)傳入的id(即存儲新聞的XML文件名),讀取相應(yīng)新聞存儲的XML文件,

49、用DataList顯示該新聞的標(biāo)題、作者、發(fā)布日期和內(nèi)容。頁面content.aspx的設(shè)置方法如下: 在此頁面中添加一個DataList控件,ID設(shè)置為“newsDL”,BorderColor、BorderWidth 、CellPadding、GridLines和Width 分別設(shè)置為“Red”、“1px”、“10”、“Horizontal”和“500px”。 在“源”視圖下,在DataList中添加如下代碼: 你所查看的新聞信息 新聞標(biāo)題: 作者: 發(fā)布日期: 新聞內(nèi)容: 10.4.3 基于XML的新聞系統(tǒng) 添加如下命名空間:Imports System.Data 添加Page的Load的

50、事件處理程序,代碼如下: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadDim DS As New DataSet() 創(chuàng)建DataSet對象DS.ReadXml(Server.MapPath(Request(id) + .xml) 讀取XML文檔newsDL.DataSource = DS.Tables(0).DefaultViewnewsDL.DataBind()End Sub10.5 Web Service10.5.1 創(chuàng)建Web Service聲明W

51、eb Service的語法:其中,Class指出包含Web Service方法的類名。例如: 將聲明一個名為NewsSite的Web Service類。10.5.1 創(chuàng)建Web Service定義Web Service類的語法:Imports System.Web.ServicesPublic Class 類名 : Inherits WebService 在此放置Web Services公有方法的定義End Class因為所有Web Service都需要繼承System.Web.Services命名空間中的Web Service對象類,所以要引入該命名空間:Imports System.Web

52、.Services10.5.1 創(chuàng)建Web Service定義Web Service類方法的語法: Public Function MethodName() As ReturnType 在此放置方法代碼 End Function其中MethodName是由Web服務(wù)公開的方法的名稱,ReturnType是該方法返回值的類型?!纠?0.11】創(chuàng)建Web Service示例。創(chuàng)建一個Web Service,其中包含一個方法,該方法的功能是返回字符串“Hello ,World!”。10.5.1 創(chuàng)建Web Service設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中添加一個Web Service文

53、件,命名為“hello.asmx”,添加的方法和添加頁面的方法相似,只是在“添加新項”對話框中選擇“Web 服務(wù)”模板。(2) 在打開的hello.vb頁面,其中代碼如下:Imports System.WebImports System.Web.ServicesImports System.Web.Services.Protocols若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消對下行的注釋。 _ _ _ _Public Class hello Inherits System.Web.Services.WebService _ Public Function He

54、lloWorld() As String Return Hello World End FunctionEnd Class10.5.1 創(chuàng)建Web Service創(chuàng)建了Web Service后,在解決方案資源管理器中打開“hello.vb”文件或者“hello.asmx”文件。按“Ctrl+F5”組合鍵運行服務(wù),結(jié)果如圖10.22所示。10.5.1 創(chuàng)建Web Service單擊頁面上的“HelloWorld”進入方法測試頁面,如圖10.23所示。10.5.1 創(chuàng)建Web Service單擊“調(diào)用”按鈕,結(jié)果如圖10.24所示。10.5.2 發(fā)布Web Service1. 使用發(fā)現(xiàn)文檔發(fā)布We

55、b Service發(fā)現(xiàn)文檔(discovery)是一個基于XML的文檔,包含對Web Service和其他發(fā)現(xiàn)文檔的引用。發(fā)現(xiàn)文檔的文件擴展名為.disco,在ASP.NET中創(chuàng)建Web Service時自動生成該文件。只要將發(fā)現(xiàn)文檔公布到一個公開的URL上,就可以使所有的客戶能夠查找和使用開發(fā)者所公布的Web服務(wù)。客戶端可以通過VS2008的“添加Web引用”對話框來訪問發(fā)現(xiàn)文檔。2. 通過UDDI發(fā)布Web Service通過UDDI發(fā)布Web Service的技術(shù)是由Ariba、IBM和Microsoft等多家廠商共同發(fā)起的,專門用于提供一個基于Internet的業(yè)務(wù)注冊表。Web Se

56、rvice的創(chuàng)建者可以在注冊表中注冊其開發(fā)的Web Service,客戶可以在注冊表中按類別或提供者查找到他們所需的Web服務(wù)。10.5.3 使用Web Service1. 添加Web引用下面介紹如何在ASP.NET中使用前面創(chuàng)建的Web服務(wù)“Service”?!纠?0.12】引用例10.11修改過的Web服務(wù)“Service”。設(shè)計步驟如下:(1) 在網(wǎng)站W(wǎng)ebSite10中(實際上可以在新建的網(wǎng)站中),右擊網(wǎng)站根目錄,選擇“添加Web引用”項。(2) 在如圖10.25所示的“添加Web引用”對話框中。單擊此鏈接 10.5.3 使用Web Service單擊“此解決方案中的Web服務(wù)”單擊“

57、Service”,如圖10.26所示,單擊“添加引用”按鈕,系統(tǒng)自動在URL列表框中填入Web服務(wù)的URL,如本例中的http:/localhost:4956/WebSite10/hello.asmx。然后在“添加Web引用”文本框中填入希望在應(yīng)用程序中使用的添加Web引用名,本例使用默認(rèn)的“l(fā)ocalhost”。單擊此鏈接 10.5.3 使用Web Service(3) 打開解決方案資源管理器,系統(tǒng)添加了“l(fā)ocalhost”Web引用,如圖10.27所示。Web引用10.5.3 使用Web Service該引用位于App_WebReferences目錄中,在該目錄下已經(jīng)添加了該Web服務(wù)的

58、WSDL文件。而在應(yīng)用程序的web.config文件的塊中,添加了如下配置,以設(shè)定實際的Web引用。 10.5.3 使用Web Service2. 客戶端調(diào)用Web服務(wù)現(xiàn)在,Web服務(wù)已經(jīng)添加到ASP.NET應(yīng)用程序中,可以在ASP.NET Web窗體中使用Web服務(wù)了。【例10.13】 客戶端調(diào)用例10.11中的Web服務(wù)。(1) 在網(wǎng)站W(wǎng)ebSite10中,添加Web窗體頁“Ex10-13.aspx”,在頁面中添加一個Button控件和一個Label控件,其中Button控件的Text屬性設(shè)置為“調(diào)用服務(wù)”,如圖10.28所示。(2) 在“設(shè)計”視圖下,雙擊Button控件,添加調(diào)用服務(wù)按

59、鈕的Click事件處理代碼,代碼如下: Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _Handles Button1.Click Dim ms As localhost.hello = New localhost.hello() Label1.Text = ms.HelloWorld()End Sub10.5.3 使用Web Service(3) 運行此網(wǎng)頁,單擊調(diào)用服務(wù)按鈕,將會調(diào)用Web服務(wù)hello的HelloWorld方法,并將結(jié)果顯示在Label上,效果如圖10.28

60、所示。10.5.4 通過Web Service發(fā)布新聞1. 建立用于新聞發(fā)布的Web Service創(chuàng)建NewsServer.asmx文件,在其中定義Web Service,包含News類,兩個公開的函數(shù)方法:GetTitle、GetContent,分別用于獲取新聞標(biāo)題和新聞內(nèi)容。首先添加命名空間:Imports System.Xml添加GetTitle和GetContent函數(shù)方法,代碼如下:2. 添加Web應(yīng)用打開“添加Web引用”對話框,單擊“此解決方案中的Web服務(wù)”單擊“NewsServer”,單擊“添加引用”按鈕,系統(tǒng)自動在URL列表框中填入Web服務(wù)的URL,如本例中的http:

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論