母版和Web用戶控件課件_第1頁
母版和Web用戶控件課件_第2頁
母版和Web用戶控件課件_第3頁
母版和Web用戶控件課件_第4頁
母版和Web用戶控件課件_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第八章Web頁面、母版和Web用戶控件第八章Web頁面、母版和Web用戶控件目標(biāo)了解ASP.NET頁的結(jié)構(gòu)掌握Page對(duì)象的各種事件和屬性理解代碼隱藏的概念Web應(yīng)用程序布局母版頁用戶控件2目標(biāo)了解ASP.NET頁的結(jié)構(gòu)2默認(rèn)的Web應(yīng)用程序文件創(chuàng)建的文件說明WebForm1.aspx和WebForm1.aspx.cs文件它們組成一個(gè)單獨(dú)的Web窗體頁。.aspx文件包含Web窗體頁的可視化元素,而.aspx.cs則包含用于Web窗體頁的代碼隱藏類AssemblyInfo.cs項(xiàng)目信息文件,包含有關(guān)某一個(gè)項(xiàng)目中程序集的元數(shù)據(jù)Web.config

存儲(chǔ)應(yīng)用程序配置信息Global.asax和Global.cs文件用于處理應(yīng)用程序級(jí)事件的可選文件Styles.css

級(jí)聯(lián)樣式表文件3默認(rèn)的Web應(yīng)用程序文件創(chuàng)建的文件說明WebForm1.8.1Page類--用戶界面設(shè)計(jì)窗口控件放置在設(shè)計(jì)窗口中的控件瀏覽器窗口中的用戶界面48.1Page類--用戶界面設(shè)計(jì)窗口控件放置在設(shè)計(jì)窗口ASP.NET頁5ASP.NET頁5Page類Page類用于表示一個(gè).aspx文件,也稱為Web窗體頁

每個(gè)頁面都派生自Page類,并繼承這個(gè)類公開的所有方法和屬性Page類的成員位于System.Web.UI命名空間中

6Page類Page類用于表示一個(gè).aspx文件,也稱為腳本部分腳本部分服務(wù)器端腳本客戶端腳本由服務(wù)器執(zhí)行由瀏覽器執(zhí)行C#VBJscriptCSS7腳本部分腳本部分服務(wù)器端腳本客戶端腳本由服務(wù)器執(zhí)行客戶端腳本客戶端腳本是頁面的一部分,當(dāng)用戶請(qǐng)求頁面時(shí),就將這些腳本發(fā)送至瀏覽器客戶端腳本可以:在將某個(gè)頁面加載至瀏覽器中時(shí),改變此頁面的外觀驗(yàn)證用戶在窗體中輸入的數(shù)據(jù),將通過驗(yàn)證的數(shù)據(jù)發(fā)送至服務(wù)器當(dāng)觸發(fā)按鈕的點(diǎn)擊事件時(shí),在瀏覽器中顯示相關(guān)信息8客戶端腳本客戶端腳本是頁面的一部分,當(dāng)用戶請(qǐng)求頁面時(shí),就將服務(wù)器端腳本服務(wù)器腳本也是頁面的一部分,但它不發(fā)送至瀏覽器,而是在請(qǐng)求頁面之后和在回送至瀏覽器之前由服務(wù)器處理這些腳本代碼可包含在服務(wù)器端的<script>代碼聲明塊中,也可包含在<%%>顯示塊中ASP.NET支持多種語言編寫的用于運(yùn)行時(shí)的服務(wù)器端代碼

服務(wù)器端代碼聲明塊必須具有runat="server"屬性<scriptrunat="server"[language="C#"]

src="scriptfile"/>

9服務(wù)器端腳本服務(wù)器腳本也是頁面的一部分,但它不發(fā)送至瀏覽器代碼隱藏3-1.aspx文件顯示內(nèi)容HTML,服務(wù)器控件靜態(tài)文本等.aspx.cs文件應(yīng)用程序邏輯

這就是代碼隱藏分離JavaScriptCSS10代碼隱藏3-1.aspx文件.aspx.cs文件這就代碼隱藏3-2

<%@PageInherits="_Default"CodeFile="Default.aspx.cs"%><html><head><title>WebForm實(shí)例</title></head><body>

<formRunat="Server">

<asp:ButtonText=“單擊此處!"OnClick="btnSubmit_Click"Runat="Server"/>

<p>

<asp:LabelID="lblMessage"Runat="Server"/>

</form>

</body></html>

表示文件..(Default.aspx)代碼隱藏文件在代碼隱藏文件中定義的事件11代碼隱藏3-2

<%@PageInherits="_代碼隱藏3-3代碼隱藏文件(Default.aspx.cs)usingSystem;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.HtmlControls;

publicpartialclass_Default:System.Web.UI.PageprotectedSystem.Web.UI.WebControls.LabellblMessage;

ProtectedvoidbtnSubmit_Click(Objectsender,EventArgse){{lblMessage.Text=“您好!"}

}繼承自Page類從表示文件調(diào)用Buttonclick事件單擊按鈕后執(zhí)行的功能12代碼隱藏3-3代碼隱藏文件(Default.aspx.代碼隱藏的工作原理代碼隱藏的原則是為代碼創(chuàng)建一個(gè)類,并從ASP.NETPage對(duì)象中繼承該類在上節(jié)中用于表示內(nèi)容的頁面Default.aspx就繼承自此代碼隱藏文件

表示頁繼承了代碼隱藏文件的所有屬性、方法和事件

代碼隱藏文件繼承自Page類,而表示文件繼承自代碼隱藏文件因?yàn)榇嬖诶^承的這種層次結(jié)構(gòu),所以代碼隱藏文件中含有Page類的所有屬性、方法和事件,而所有這些屬性、方法和事件也都存在于表示文件13代碼隱藏的工作原理代碼隱藏的原則是為代碼創(chuàng)建一個(gè)類,并從AASP.NET頁ASP.NET頁文件的擴(kuò)展名為.aspx可在任何瀏覽器中向用戶顯示信息,因?yàn)樗鼈兛膳c任何瀏覽器或移動(dòng)設(shè)備都兼容與.NET公共語言運(yùn)行庫支持的任何語言都兼容

使用大量控件快速創(chuàng)建豐富的用戶界面

使用服務(wù)器端代碼實(shí)現(xiàn)應(yīng)用程序邏輯VisualStudio提供了強(qiáng)大的快速應(yīng)用程序開發(fā)工具,用于設(shè)計(jì)用戶窗體并對(duì)其進(jìn)行編程14ASP.NET頁ASP.NET頁文件的擴(kuò)展名為.aspPage對(duì)象的事件ASP.NET頁框架在不同的階段處理Web窗體頁時(shí)都可能引發(fā)事件,并執(zhí)行響應(yīng)事件的事件處理程序事件處理程序?qū)嶋H上就是一個(gè)子程序,執(zhí)行任何給定事件的相關(guān)代碼事件AbortTransactionInitCommitTransactionLoadDataBindingPreRenderDisposedUnloadError15Page對(duì)象的事件ASP.NET頁框架在不同的階段處理Web窗體頁的生命周期初始化頁面

階段引發(fā)的事件Page_Init

加載頁面驗(yàn)證事件處理頁面卸載Page_LoadValidateFormeventhandlerPage_Unload頁面顯示之前Page_PreRender在頁面處理的某些特定階段,頁面會(huì)自動(dòng)觸發(fā)一些事件。而與服務(wù)器控件相關(guān)聯(lián)的其他事件則在服務(wù)器端觸發(fā)并得到處理16Web窗體頁的生命周期初始化頁面階段引發(fā)的事件PPage_Load事件在加載頁面時(shí)會(huì)觸發(fā)Page_Load事件ASP.NET將自動(dòng)調(diào)用Page_Load子程序,并執(zhí)行其中的代碼privatevoidPage_Load(objectsender,System.EventArgse){

lblDate.Text=Convert.ToString(date1.DayOfWeek);}從此處調(diào)用Page_Load事件只要加載頁面,就會(huì)執(zhí)行Page_Load事件內(nèi)的代碼17Page_Load事件在加載頁面時(shí)會(huì)觸發(fā)Page_LoaPage.IsPostBack屬性2-1利用Page對(duì)象的IsPostBack屬性,可以檢查.aspx頁是否為傳遞回服務(wù)器的頁面只有在首次加載頁面時(shí),Page.IsPostBack屬性才用于頁面的Load事件中以執(zhí)行代碼如果Page.IsPostBack屬性值為False,則此頁面為首次加載用戶界面18Page.IsPostBack屬性2-1利用Page對(duì)服務(wù)器服務(wù)器域名URL,資源的名稱響應(yīng)這是HTTP請(qǐng)求這是HTTP響應(yīng)19服務(wù)器服務(wù)器域名URL,資源的名稱www.google.coPage.IsPostBack屬性2-2

privatevoidPage_Load(objectsender,System.EventArgse){if(!Page.IsPostBack) { lblTime.Text= System.DateTime.Now.ToString(); }}privatevoidbtnSubmit_Click(objectsender,System.EventArgse){

lblMessage.Text="請(qǐng)確定您填寫的信息:"+ txtName.Text+""+txtAge.Text+" "+txtHabbit.Text;}

Page_Load事件如果頁面為首次加載,則Page.IsPostBack屬性的值是False,并顯示日期和時(shí)間單擊“提交”按鈕后,日期和時(shí)間都將保持不變20Page.IsPostBack屬性2-2

Page_Web應(yīng)用程序布局概述復(fù)雜的Web應(yīng)用程序需要一致的頁面布局傳統(tǒng)的解決方案一般包括下列幾種:使用框架:缺點(diǎn)是需要瀏覽器支持。使用表格:缺點(diǎn)是影響性能。使用用戶自定義控件:缺點(diǎn)是增加了程序開發(fā)的復(fù)雜性。21Web應(yīng)用程序布局概述復(fù)雜的Web應(yīng)用程序需要一致的頁面布頁面典型布局欄式結(jié)構(gòu)簡(jiǎn)單實(shí)用、條理分明、格局清晰嚴(yán)謹(jǐn)、適合信息量大的頁面區(qū)域結(jié)構(gòu)頁面精美、適合信息量較少的頁面22頁面典型布局欄式結(jié)構(gòu)22頁面布局技術(shù)頁面布局技術(shù)TableDIV+CSS簡(jiǎn)單、方便,現(xiàn)已較少用于布局更加美觀在頁面展示和瀏覽速度上有很大優(yōu)勢(shì)注意:Table方式的布局越來越少,并不代表Table標(biāo)簽過時(shí),在DIV布局的頁面上,常常會(huì)有Table的表格。23頁面布局技術(shù)頁面布局TableDIV+CSS簡(jiǎn)單、方便,母版頁母版頁OOP第8章->Page聯(lián)系方式內(nèi)容內(nèi)容頁OOP第8章->Page聯(lián)系方式內(nèi)容合并的頁面24母版頁母版頁OOP第8章->Page聯(lián)系方式內(nèi)容內(nèi)容頁OO母版頁概述使用ASP.NET的母版頁,可以為Web站點(diǎn)創(chuàng)建統(tǒng)一的布局。母版頁定義Web頁面的外觀和標(biāo)準(zhǔn)行為;各內(nèi)容頁定義Web頁面要顯示的特殊內(nèi)容。當(dāng)用戶請(qǐng)求內(nèi)容頁時(shí),這些內(nèi)容頁與母版頁合并一起輸出。母版頁功能可以為站點(diǎn)定義公用的結(jié)構(gòu)和界面元素,如頁眉、頁腳或?qū)Ш綑凇?5母版頁概述使用ASP.NET的母版頁,可以為Web站點(diǎn)創(chuàng)建統(tǒng)母版頁的優(yōu)勢(shì)有利于站點(diǎn)修改和維護(hù),降低開發(fā)人員的工作強(qiáng)度提供高效的內(nèi)容整合能力有利于實(shí)現(xiàn)頁面布局母版頁應(yīng)用于統(tǒng)一的布局26母版頁的優(yōu)勢(shì)有利于站點(diǎn)修改和維護(hù),降低開發(fā)人員的工作強(qiáng)度母版定義母版頁母版頁為具有擴(kuò)展名.master的ASP.NET文件。母版頁由特殊的@Master指令識(shí)別。例如: <%@MasterLanguage=“C#"%>母版頁可以包含靜態(tài)文本、HTML元素、服務(wù)器控件以及代碼。母版頁還可以包含一種特殊類型的控件:ContentPlaceHolder控件。ContentPlaceHolder定義了一個(gè)母版頁呈現(xiàn)區(qū)域,可由與母版頁關(guān)聯(lián)的頁的內(nèi)容來替換。ContentPlaceHolder還可以包含默認(rèn)內(nèi)容。27定義母版頁母版頁為具有擴(kuò)展名.master的ASP.NET代碼分析母版頁代碼內(nèi)容頁代碼<div>

網(wǎng)上花店

<asp:contentplaceholderid="cphContent"runat="server"></asp:contentplaceholder>聯(lián)系我們</div><%@PageLanguage="C#"MasterPageFile="~/MasterPage.master"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"Title="UntitledPage"%><asp:ContentID="Content1"ContentPlaceHolderID="cphContent"Runat="Server"></asp:Content>內(nèi)容塊的id,用來確定內(nèi)容塊的放置的區(qū)域?qū)?yīng)的母版頁的路徑對(duì)應(yīng)于母版頁的內(nèi)容塊28代碼分析母版頁代碼<div><%@PageLanguag在內(nèi)容頁中使用母版頁右擊“解決方案資源管理器”項(xiàng)目名稱,在彈出的菜單中選擇“添加新項(xiàng)”命令,彈出“添加新項(xiàng)”對(duì)話框。在“添加新項(xiàng)”對(duì)話框中,選擇“VisualC#”為該窗體頁的語言,選擇“Web內(nèi)容窗體”選項(xiàng);給該控件一個(gè)合適的命名,一定要以“.aspx”為后綴名。單擊“添加”按鈕,將會(huì)打開“選擇母版頁”對(duì)話框,在“文件夾內(nèi)容”列表中選擇需要引用的母版頁文件,然后單擊“確定”按鈕。29在內(nèi)容頁中使用母版頁右擊“解決方案資源管理器”項(xiàng)目名稱,在彈使用演示演示母版頁的使用創(chuàng)建母版頁設(shè)計(jì)樣式添加內(nèi)容頁添加內(nèi)容頁有兩種方式:1、在母版頁任意位置右鍵,點(diǎn)擊添加內(nèi)容頁;2、在解決方案資源管理器上新建新項(xiàng),在生成aspx頁面時(shí)勾選“選擇母版頁”30使用演示演示母版頁的使用添加內(nèi)容頁有兩種方式:30用戶控件概述在一個(gè)大系統(tǒng)中,有時(shí)候會(huì)只有幾個(gè)*.aspx頁面,其余的都是做成*.ascx頁面,如網(wǎng)站的導(dǎo)航、網(wǎng)頁的頭部和底部。這樣可以增強(qiáng)頁面之間的藕合性。將一個(gè)用戶控件*.ascx都作為一個(gè)獨(dú)立的功能塊。需要修改某一功能時(shí),只需要修改相應(yīng)的*.ascx文件。31用戶控件概述在一個(gè)大系統(tǒng)中,有時(shí)候會(huì)只有幾個(gè)*.aspx頁面用戶控件用戶控件的擴(kuò)展名為“ascx”,與“aspx”在結(jié)構(gòu)上相似,是指頁面中加載的功能模塊。只是用戶控件不能單獨(dú)作為頁面運(yùn)行,必須嵌入到aspx頁面中,或者嵌入到其他用戶控件中使用。32用戶控件用戶控件的擴(kuò)展名為“ascx”,與“aspx”在結(jié)構(gòu)用戶控件注冊(cè)<%@Registersrc="WebUserControl.ascx"tagname="WebUserControl"tagprefix="uc1"%><uc1:WebUserControlID="WebUserControl1"

runat="server"/>33用戶控件注冊(cè)<%@Registersrc="WebUs將Web窗體頁轉(zhuǎn)化為用戶控件用戶控件比Web窗體頁面少了<html>、<body>和<form>等元素。知道了用戶控件和Web窗體頁面的差別,就可以通過添加、刪除和修改相應(yīng)的元素,并且將aspx頁面中的@Page指令變成了@Control指令,實(shí)現(xiàn)Web窗體頁面和用戶控件的相互轉(zhuǎn)化。34將Web窗體頁轉(zhuǎn)化為用戶控件用戶控件比Web窗體頁面少了<h頁面指令@Page定義ASP.NET頁解析器和編譯器所使用的特定頁面的屬性,只可包括在.aspx文件中@Control定義ASP.NET頁解析器和編譯器所使用的特定用戶控件的屬性,只可包括在.ascx文件中@Import在頁面或用戶控件中顯式地引入一個(gè)名稱空間@Implements允許在頁面或用戶控件中實(shí)現(xiàn)一個(gè).NET接口@Register用于注冊(cè)頁面中的用戶控件和自定義服務(wù)器控件以便使用它們@Assembly將程序集引入到當(dāng)前頁面或用戶控件中,以便它所包含的類和接口能夠適用于頁面中的代碼@OutputCache對(duì)頁面或用戶控件在服務(wù)器上如何進(jìn)行高速緩存進(jìn)行控制@Reference用來識(shí)別當(dāng)前頁面在運(yùn)行時(shí)應(yīng)該動(dòng)態(tài)編譯和鏈接的頁面或用戶控件

ASP.NET頁面中通常包含一些類似<%@%>這樣的代碼35頁面指令@Page定義ASP.NET頁解析器和編譯@Page指令@Page指令定義了ASP.NET頁解析器和編譯器使用的特定于頁面的屬性它用于在處理和編譯某頁面時(shí)配置與此頁面相關(guān)的屬性每個(gè)ASPX頁只能有一個(gè)@Page指令@Page指令的語法如下:

<%@Pageattribute="value"

[attribute="value"...]%>36@Page指令@Page指令定義了ASP.NET頁@Page指令的屬性<%@PageLanguage="c#"AutoEventWireup=“true"MasterPageFile="~/Site.Master"

Codebehind="ContentPage.aspx.cs"Inherits="_01.ContentPage"

ContentType="text/xml"%>指定在編譯時(shí)和頁面的代碼聲明塊中使用的語言指示能否自動(dòng)處理頁面的事件指定繼承的母版頁指定編譯的文件名稱,此文件含有與此頁面關(guān)聯(lián)的類指定由頁面繼承的代碼隱藏類將響應(yīng)的HTTP內(nèi)容類型作為一個(gè)標(biāo)準(zhǔn)的MIME類型

37@Page指令的屬性<%@PageLanguage=@Control指令2-1用于定義

ASP.NET頁解析器和編譯器所使用的用戶控件(.ascx

文件)的屬性一個(gè).ascx文件中只可包含一個(gè)@Control指令

@Control指令的語法如下:

<%@Controlattribute="value"[attribute="value"...]%>38@Control指令2-1用于定義ASP.NET頁@Control指令2-2@Control指令的屬性:EnableViewState屬性用于啟用/禁用跨HTTP請(qǐng)求的視圖狀態(tài)其他屬性(如Language、AutoEventWireup、Inherits、ClassName、Debug、Description和CompilerOptions等)與@Page指令的屬性相似@Control指令的示例:<%@ControlLanguage=“C#"EnableViewState="false"%>39@Control指令2-2@Control指令的屬性@Import指令@Import指令用于在頁面中導(dǎo)入一個(gè)名稱空間,此名稱空間既可是MS.NetFramework中已定義的名稱空間,也可是自定義的名稱空間導(dǎo)入名稱空間允許使用所有包含在該名稱空間中的類和接口@Import指令只有一個(gè)屬性namespace,它指定要導(dǎo)入的命名空間,如下所示:<%@

Import

namespace="System.Web.Mail"

%>40@Import指令@Import指令用于在頁面中導(dǎo)入@Implements指令@Implements指令可用于在ASP.NET頁中實(shí)現(xiàn).NetFramework接口在Web窗體頁中實(shí)現(xiàn)接口時(shí),必須實(shí)現(xiàn)該接口中聲明的所有成員,可在代碼聲明塊的<script>元素和</script>之間聲明其屬性、事件和方法每一個(gè).aspx頁只可有一個(gè)@Implements指令@Implements指令的語法如下:<%@Implementsinterface="ValidInterfaceName"%>41@Implements指令@Implements指令可用@Register指令@Register指令用于注冊(cè)頁面中的用戶控件和自定義服務(wù)器控件以便可使用它們當(dāng)創(chuàng)建一個(gè)自定義控件或用戶控件時(shí),可以通過將屬性添加到頁面的標(biāo)簽中把它們傳送給控件

@Register指令的語法如下所示:<%@Registertagprefix="tagprefix“ Namespace="namespace" Src=“pathname"%>42@Register指令@Register指令用于注冊(cè)頁@Assembly指令@Assembly指令用于直接引用一個(gè)程序集,以便于它所包含的類和接口能夠適用于頁面中的代碼@Assembly指令的語法如下:<%@AssemblyName="assemblyname"%><%@AssemblySrc="pathname"%>43@Assembly指令@Assembly指令用于直接@Reference指令@Reference指令用來識(shí)別當(dāng)前頁面在運(yùn)行時(shí)應(yīng)動(dòng)態(tài)編譯和鏈接的頁面或控件,允許在運(yùn)行時(shí)間將用戶控件動(dòng)態(tài)添加到頁面中@Reference指令的語法如下:<%@Referencepage|control="pathtofile"%>44@Reference指令@Reference指令用總結(jié)ASP.NET頁文件是含有將在Web服務(wù)器上執(zhí)行代碼的文件。其擴(kuò)展名是.aspx或.ascxASP.NET代碼隱藏文件使開發(fā)人員可以在C#或VisualBasic.NET類中編寫控制它們的頁的邏輯,這樣可與HTML代碼清楚地分離開來ASP.NET頁面中使用的腳本:服務(wù)器端腳本、客戶端腳本事件處理程序?qū)嶋H上就是一個(gè)子程序,執(zhí)行任何給定事件的相關(guān)代碼在頁面加載時(shí)引發(fā)Page_Load事件Page.IsPostback屬性用于檢查頁面是否為首次加載45總結(jié)ASP.NET頁文件是含有將在Web服務(wù)器上執(zhí)行第八章Web頁面、母版和Web用戶控件第八章Web頁面、母版和Web用戶控件目標(biāo)了解ASP.NET頁的結(jié)構(gòu)掌握Page對(duì)象的各種事件和屬性理解代碼隱藏的概念Web應(yīng)用程序布局母版頁用戶控件47目標(biāo)了解ASP.NET頁的結(jié)構(gòu)2默認(rèn)的Web應(yīng)用程序文件創(chuàng)建的文件說明WebForm1.aspx和WebForm1.aspx.cs文件它們組成一個(gè)單獨(dú)的Web窗體頁。.aspx文件包含Web窗體頁的可視化元素,而.aspx.cs則包含用于Web窗體頁的代碼隱藏類AssemblyInfo.cs項(xiàng)目信息文件,包含有關(guān)某一個(gè)項(xiàng)目中程序集的元數(shù)據(jù)Web.config

存儲(chǔ)應(yīng)用程序配置信息Global.asax和Global.cs文件用于處理應(yīng)用程序級(jí)事件的可選文件Styles.css

級(jí)聯(lián)樣式表文件48默認(rèn)的Web應(yīng)用程序文件創(chuàng)建的文件說明WebForm1.8.1Page類--用戶界面設(shè)計(jì)窗口控件放置在設(shè)計(jì)窗口中的控件瀏覽器窗口中的用戶界面498.1Page類--用戶界面設(shè)計(jì)窗口控件放置在設(shè)計(jì)窗口ASP.NET頁50ASP.NET頁5Page類Page類用于表示一個(gè).aspx文件,也稱為Web窗體頁

每個(gè)頁面都派生自Page類,并繼承這個(gè)類公開的所有方法和屬性Page類的成員位于System.Web.UI命名空間中

51Page類Page類用于表示一個(gè).aspx文件,也稱為腳本部分腳本部分服務(wù)器端腳本客戶端腳本由服務(wù)器執(zhí)行由瀏覽器執(zhí)行C#VBJscriptCSS52腳本部分腳本部分服務(wù)器端腳本客戶端腳本由服務(wù)器執(zhí)行客戶端腳本客戶端腳本是頁面的一部分,當(dāng)用戶請(qǐng)求頁面時(shí),就將這些腳本發(fā)送至瀏覽器客戶端腳本可以:在將某個(gè)頁面加載至瀏覽器中時(shí),改變此頁面的外觀驗(yàn)證用戶在窗體中輸入的數(shù)據(jù),將通過驗(yàn)證的數(shù)據(jù)發(fā)送至服務(wù)器當(dāng)觸發(fā)按鈕的點(diǎn)擊事件時(shí),在瀏覽器中顯示相關(guān)信息53客戶端腳本客戶端腳本是頁面的一部分,當(dāng)用戶請(qǐng)求頁面時(shí),就將服務(wù)器端腳本服務(wù)器腳本也是頁面的一部分,但它不發(fā)送至瀏覽器,而是在請(qǐng)求頁面之后和在回送至瀏覽器之前由服務(wù)器處理這些腳本代碼可包含在服務(wù)器端的<script>代碼聲明塊中,也可包含在<%%>顯示塊中ASP.NET支持多種語言編寫的用于運(yùn)行時(shí)的服務(wù)器端代碼

服務(wù)器端代碼聲明塊必須具有runat="server"屬性<scriptrunat="server"[language="C#"]

src="scriptfile"/>

54服務(wù)器端腳本服務(wù)器腳本也是頁面的一部分,但它不發(fā)送至瀏覽器代碼隱藏3-1.aspx文件顯示內(nèi)容HTML,服務(wù)器控件靜態(tài)文本等.aspx.cs文件應(yīng)用程序邏輯

這就是代碼隱藏分離JavaScriptCSS55代碼隱藏3-1.aspx文件.aspx.cs文件這就代碼隱藏3-2

<%@PageInherits="_Default"CodeFile="Default.aspx.cs"%><html><head><title>WebForm實(shí)例</title></head><body>

<formRunat="Server">

<asp:ButtonText=“單擊此處!"OnClick="btnSubmit_Click"Runat="Server"/>

<p>

<asp:LabelID="lblMessage"Runat="Server"/>

</form>

</body></html>

表示文件..(Default.aspx)代碼隱藏文件在代碼隱藏文件中定義的事件56代碼隱藏3-2

<%@PageInherits="_代碼隱藏3-3代碼隱藏文件(Default.aspx.cs)usingSystem;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.HtmlControls;

publicpartialclass_Default:System.Web.UI.PageprotectedSystem.Web.UI.WebControls.LabellblMessage;

ProtectedvoidbtnSubmit_Click(Objectsender,EventArgse){{lblMessage.Text=“您好!"}

}繼承自Page類從表示文件調(diào)用Buttonclick事件單擊按鈕后執(zhí)行的功能57代碼隱藏3-3代碼隱藏文件(Default.aspx.代碼隱藏的工作原理代碼隱藏的原則是為代碼創(chuàng)建一個(gè)類,并從ASP.NETPage對(duì)象中繼承該類在上節(jié)中用于表示內(nèi)容的頁面Default.aspx就繼承自此代碼隱藏文件

表示頁繼承了代碼隱藏文件的所有屬性、方法和事件

代碼隱藏文件繼承自Page類,而表示文件繼承自代碼隱藏文件因?yàn)榇嬖诶^承的這種層次結(jié)構(gòu),所以代碼隱藏文件中含有Page類的所有屬性、方法和事件,而所有這些屬性、方法和事件也都存在于表示文件58代碼隱藏的工作原理代碼隱藏的原則是為代碼創(chuàng)建一個(gè)類,并從AASP.NET頁ASP.NET頁文件的擴(kuò)展名為.aspx可在任何瀏覽器中向用戶顯示信息,因?yàn)樗鼈兛膳c任何瀏覽器或移動(dòng)設(shè)備都兼容與.NET公共語言運(yùn)行庫支持的任何語言都兼容

使用大量控件快速創(chuàng)建豐富的用戶界面

使用服務(wù)器端代碼實(shí)現(xiàn)應(yīng)用程序邏輯VisualStudio提供了強(qiáng)大的快速應(yīng)用程序開發(fā)工具,用于設(shè)計(jì)用戶窗體并對(duì)其進(jìn)行編程59ASP.NET頁ASP.NET頁文件的擴(kuò)展名為.aspPage對(duì)象的事件ASP.NET頁框架在不同的階段處理Web窗體頁時(shí)都可能引發(fā)事件,并執(zhí)行響應(yīng)事件的事件處理程序事件處理程序?qū)嶋H上就是一個(gè)子程序,執(zhí)行任何給定事件的相關(guān)代碼事件AbortTransactionInitCommitTransactionLoadDataBindingPreRenderDisposedUnloadError60Page對(duì)象的事件ASP.NET頁框架在不同的階段處理Web窗體頁的生命周期初始化頁面

階段引發(fā)的事件Page_Init

加載頁面驗(yàn)證事件處理頁面卸載Page_LoadValidateFormeventhandlerPage_Unload頁面顯示之前Page_PreRender在頁面處理的某些特定階段,頁面會(huì)自動(dòng)觸發(fā)一些事件。而與服務(wù)器控件相關(guān)聯(lián)的其他事件則在服務(wù)器端觸發(fā)并得到處理61Web窗體頁的生命周期初始化頁面階段引發(fā)的事件PPage_Load事件在加載頁面時(shí)會(huì)觸發(fā)Page_Load事件ASP.NET將自動(dòng)調(diào)用Page_Load子程序,并執(zhí)行其中的代碼privatevoidPage_Load(objectsender,System.EventArgse){

lblDate.Text=Convert.ToString(date1.DayOfWeek);}從此處調(diào)用Page_Load事件只要加載頁面,就會(huì)執(zhí)行Page_Load事件內(nèi)的代碼62Page_Load事件在加載頁面時(shí)會(huì)觸發(fā)Page_LoaPage.IsPostBack屬性2-1利用Page對(duì)象的IsPostBack屬性,可以檢查.aspx頁是否為傳遞回服務(wù)器的頁面只有在首次加載頁面時(shí),Page.IsPostBack屬性才用于頁面的Load事件中以執(zhí)行代碼如果Page.IsPostBack屬性值為False,則此頁面為首次加載用戶界面63Page.IsPostBack屬性2-1利用Page對(duì)服務(wù)器服務(wù)器域名URL,資源的名稱響應(yīng)這是HTTP請(qǐng)求這是HTTP響應(yīng)64服務(wù)器服務(wù)器域名URL,資源的名稱www.google.coPage.IsPostBack屬性2-2

privatevoidPage_Load(objectsender,System.EventArgse){if(!Page.IsPostBack) { lblTime.Text= System.DateTime.Now.ToString(); }}privatevoidbtnSubmit_Click(objectsender,System.EventArgse){

lblMessage.Text="請(qǐng)確定您填寫的信息:"+ txtName.Text+""+txtAge.Text+" "+txtHabbit.Text;}

Page_Load事件如果頁面為首次加載,則Page.IsPostBack屬性的值是False,并顯示日期和時(shí)間單擊“提交”按鈕后,日期和時(shí)間都將保持不變65Page.IsPostBack屬性2-2

Page_Web應(yīng)用程序布局概述復(fù)雜的Web應(yīng)用程序需要一致的頁面布局傳統(tǒng)的解決方案一般包括下列幾種:使用框架:缺點(diǎn)是需要瀏覽器支持。使用表格:缺點(diǎn)是影響性能。使用用戶自定義控件:缺點(diǎn)是增加了程序開發(fā)的復(fù)雜性。66Web應(yīng)用程序布局概述復(fù)雜的Web應(yīng)用程序需要一致的頁面布頁面典型布局欄式結(jié)構(gòu)簡(jiǎn)單實(shí)用、條理分明、格局清晰嚴(yán)謹(jǐn)、適合信息量大的頁面區(qū)域結(jié)構(gòu)頁面精美、適合信息量較少的頁面67頁面典型布局欄式結(jié)構(gòu)22頁面布局技術(shù)頁面布局技術(shù)TableDIV+CSS簡(jiǎn)單、方便,現(xiàn)已較少用于布局更加美觀在頁面展示和瀏覽速度上有很大優(yōu)勢(shì)注意:Table方式的布局越來越少,并不代表Table標(biāo)簽過時(shí),在DIV布局的頁面上,常常會(huì)有Table的表格。68頁面布局技術(shù)頁面布局TableDIV+CSS簡(jiǎn)單、方便,母版頁母版頁OOP第8章->Page聯(lián)系方式內(nèi)容內(nèi)容頁OOP第8章->Page聯(lián)系方式內(nèi)容合并的頁面69母版頁母版頁OOP第8章->Page聯(lián)系方式內(nèi)容內(nèi)容頁OO母版頁概述使用ASP.NET的母版頁,可以為Web站點(diǎn)創(chuàng)建統(tǒng)一的布局。母版頁定義Web頁面的外觀和標(biāo)準(zhǔn)行為;各內(nèi)容頁定義Web頁面要顯示的特殊內(nèi)容。當(dāng)用戶請(qǐng)求內(nèi)容頁時(shí),這些內(nèi)容頁與母版頁合并一起輸出。母版頁功能可以為站點(diǎn)定義公用的結(jié)構(gòu)和界面元素,如頁眉、頁腳或?qū)Ш綑凇?0母版頁概述使用ASP.NET的母版頁,可以為Web站點(diǎn)創(chuàng)建統(tǒng)母版頁的優(yōu)勢(shì)有利于站點(diǎn)修改和維護(hù),降低開發(fā)人員的工作強(qiáng)度提供高效的內(nèi)容整合能力有利于實(shí)現(xiàn)頁面布局母版頁應(yīng)用于統(tǒng)一的布局71母版頁的優(yōu)勢(shì)有利于站點(diǎn)修改和維護(hù),降低開發(fā)人員的工作強(qiáng)度母版定義母版頁母版頁為具有擴(kuò)展名.master的ASP.NET文件。母版頁由特殊的@Master指令識(shí)別。例如: <%@MasterLanguage=“C#"%>母版頁可以包含靜態(tài)文本、HTML元素、服務(wù)器控件以及代碼。母版頁還可以包含一種特殊類型的控件:ContentPlaceHolder控件。ContentPlaceHolder定義了一個(gè)母版頁呈現(xiàn)區(qū)域,可由與母版頁關(guān)聯(lián)的頁的內(nèi)容來替換。ContentPlaceHolder還可以包含默認(rèn)內(nèi)容。72定義母版頁母版頁為具有擴(kuò)展名.master的ASP.NET代碼分析母版頁代碼內(nèi)容頁代碼<div>

網(wǎng)上花店

<asp:contentplaceholderid="cphContent"runat="server"></asp:contentplaceholder>聯(lián)系我們</div><%@PageLanguage="C#"MasterPageFile="~/MasterPage.master"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"Title="UntitledPage"%><asp:ContentID="Content1"ContentPlaceHolderID="cphContent"Runat="Server"></asp:Content>內(nèi)容塊的id,用來確定內(nèi)容塊的放置的區(qū)域?qū)?yīng)的母版頁的路徑對(duì)應(yīng)于母版頁的內(nèi)容塊73代碼分析母版頁代碼<div><%@PageLanguag在內(nèi)容頁中使用母版頁右擊“解決方案資源管理器”項(xiàng)目名稱,在彈出的菜單中選擇“添加新項(xiàng)”命令,彈出“添加新項(xiàng)”對(duì)話框。在“添加新項(xiàng)”對(duì)話框中,選擇“VisualC#”為該窗體頁的語言,選擇“Web內(nèi)容窗體”選項(xiàng);給該控件一個(gè)合適的命名,一定要以“.aspx”為后綴名。單擊“添加”按鈕,將會(huì)打開“選擇母版頁”對(duì)話框,在“文件夾內(nèi)容”列表中選擇需要引用的母版頁文件,然后單擊“確定”按鈕。74在內(nèi)容頁中使用母版頁右擊“解決方案資源管理器”項(xiàng)目名稱,在彈使用演示演示母版頁的使用創(chuàng)建母版頁設(shè)計(jì)樣式添加內(nèi)容頁添加內(nèi)容頁有兩種方式:1、在母版頁任意位置右鍵,點(diǎn)擊添加內(nèi)容頁;2、在解決方案資源管理器上新建新項(xiàng),在生成aspx頁面時(shí)勾選“選擇母版頁”75使用演示演示母版頁的使用添加內(nèi)容頁有兩種方式:30用戶控件概述在一個(gè)大系統(tǒng)中,有時(shí)候會(huì)只有幾個(gè)*.aspx頁面,其余的都是做成*.ascx頁面,如網(wǎng)站的導(dǎo)航、網(wǎng)頁的頭部和底部。這樣可以增強(qiáng)頁面之間的藕合性。將一個(gè)用戶控件*.ascx都作為一個(gè)獨(dú)立的功能塊。需要修改某一功能時(shí),只需要修改相應(yīng)的*.ascx文件。76用戶控件概述在一個(gè)大系統(tǒng)中,有時(shí)候會(huì)只有幾個(gè)*.aspx頁面用戶控件用戶控件的擴(kuò)展名為“ascx”,與“aspx”在結(jié)構(gòu)上相似,是指頁面中加載的功能模塊。只是用戶控件不能單獨(dú)作為頁面運(yùn)行,必須嵌入到aspx頁面中,或者嵌入到其他用戶控件中使用。77用戶控件用戶控件的擴(kuò)展名為“ascx”,與“aspx”在結(jié)構(gòu)用戶控件注冊(cè)<%@Registersrc="WebUserControl.ascx"tagname="WebUserControl"tagprefix="uc1"%><uc1:WebUserControlID="WebUserControl1"

runat="server"/>78用戶控件注冊(cè)<%@Registersrc="WebUs將Web窗體頁轉(zhuǎn)化為用戶控件用戶控件比Web窗體頁面少了<html>、<body>和<form>等元素。知道了用戶控件和Web窗體頁面的差別,就可以通過添加、刪除和修改相應(yīng)的元素,并且將aspx頁面中的@Page指令變成了@Control指令,實(shí)現(xiàn)Web窗體頁面和用戶控件的相互轉(zhuǎn)化。79將Web窗體頁轉(zhuǎn)化為用戶控件用戶控件比Web窗體頁面少了<h頁面指令@Page定義ASP.NET頁解析器和編譯器所使用的特定頁面的屬性,只可包括在.aspx文件中@Control定義ASP.NET頁解析器和編譯器所使用的特定用戶控件的屬性,只可包括在.ascx文件中@Import在頁面或用戶控件中顯式地引入一個(gè)名稱空間@Implements允許在頁面或用戶控件中實(shí)現(xiàn)一個(gè).NET接口@Register用于注冊(cè)頁面中的用戶控件和自定義服務(wù)器控件以便使用它們@Assembly將程序集引入到當(dāng)前頁面或用戶控件中,以便它所包含的類和接口能夠適用于頁面中的代碼@OutputCache對(duì)頁面或用戶控件在服務(wù)器上如何進(jìn)行高速緩存進(jìn)行控制@Reference用來識(shí)別當(dāng)前頁面在運(yùn)行時(shí)應(yīng)該動(dòng)態(tài)編譯和鏈接的頁面或用戶控件

ASP.NET頁面中通常包含一些類似<%@%>這樣的代碼80頁面指令@Page定義ASP.NET頁解析器和編譯@Page指令@Page指令定義了ASP.NET頁解析器和編譯器使用的特定于頁面的屬性它用于在處理和編譯某頁面時(shí)配置與此頁面相關(guān)的屬性每個(gè)ASPX頁只能有一個(gè)@Page指令@Page指令的語法如下:

<%@Pageattribute="value"

[attribute="value"...]%>81@Page指令@Page指令定義了ASP.NET頁@Page指令的屬性<%@PageLanguage="c#"AutoEventWireup=“true"MasterPageFile="~/Site.Master"

Codebehind="ContentPage.aspx.cs"Inherits="_01.ContentPage"

ContentType="text/xml"%>指定在編譯時(shí)和頁面的代碼聲明塊中使用的語言指示能否自動(dòng)處理頁面的事件指定繼承的母版頁指定編譯的文件名稱,此文件含有與此頁面關(guān)聯(lián)的類指定由頁面繼承的代碼隱藏類將響應(yīng)的HTTP內(nèi)容類型作為一個(gè)標(biāo)準(zhǔn)的MIME類型

82@Page指令的屬性<%@PageLanguage=@Con

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論