《ASP.NET4.0程序設(shè)計(jì)案例教程》課件-第4章模板頁(yè)和站點(diǎn)導(dǎo)航_第1頁(yè)
《ASP.NET4.0程序設(shè)計(jì)案例教程》課件-第4章模板頁(yè)和站點(diǎn)導(dǎo)航_第2頁(yè)
《ASP.NET4.0程序設(shè)計(jì)案例教程》課件-第4章模板頁(yè)和站點(diǎn)導(dǎo)航_第3頁(yè)
《ASP.NET4.0程序設(shè)計(jì)案例教程》課件-第4章模板頁(yè)和站點(diǎn)導(dǎo)航_第4頁(yè)
《ASP.NET4.0程序設(shè)計(jì)案例教程》課件-第4章模板頁(yè)和站點(diǎn)導(dǎo)航_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章模板頁(yè)和站點(diǎn)導(dǎo)航本章學(xué)習(xí)目標(biāo)了解ASP.NET中模板頁(yè)的作用掌握ASP.NET中模板頁(yè)的設(shè)計(jì)與應(yīng)用方法掌握ASP.NET中主題的創(chuàng)建與使用方法掌握頁(yè)面導(dǎo)航控件的使用方法4.1模板頁(yè)基礎(chǔ)

4.1.1創(chuàng)建簡(jiǎn)單的模板頁(yè)4.1.2使用簡(jiǎn)單的內(nèi)容頁(yè)4.1.3ContentPlaceHolder控件里默認(rèn)內(nèi)容4.1.4

相對(duì)路徑的處理4.1.5通過Web.config文件全局設(shè)置模板頁(yè)4.1.1創(chuàng)建簡(jiǎn)單的模板頁(yè)模板頁(yè)主要代碼<body><formid="form1"runat="server"><div><asp:ContentPlaceHolderid="ContentPlaceHolder1"runat="server"></asp:ContentPlaceHolder></div></form></body></html>模板頁(yè)設(shè)計(jì)效果4.1.2

使用簡(jiǎn)單的內(nèi)容頁(yè)創(chuàng)建模板頁(yè)的內(nèi)容頁(yè)的方法與創(chuàng)建普通的Web頁(yè)面一樣,即選中項(xiàng)目右擊鼠標(biāo),執(zhí)行"添加新項(xiàng)"命令,在彈出的"添加新項(xiàng)"對(duì)話框中選擇Web窗體,并鉤選“選擇模板頁(yè)”選項(xiàng)。選擇母板頁(yè)內(nèi)容頁(yè)主要代碼<asp:ContentID="Content1"ContentPlaceHolderID="Top"Runat="Server"></asp:Content><asp:ContentID="Content2"ContentPlaceHolderID="Main"Runat="Server"></asp:Content>模板頁(yè)和內(nèi)容頁(yè)的對(duì)應(yīng)關(guān)系4.1.3ContentPlaceHolder控件里默認(rèn)內(nèi)容

在模板頁(yè)里面定義ContentPlaceHolder控件時(shí),還可以定義相關(guān)的默認(rèn)的內(nèi)容。這些默認(rèn)的內(nèi)容在內(nèi)容頁(yè)里面沒有提供相應(yīng)的Content控件時(shí)才會(huì)使用。<asp:ContentPlaceHolderID="Top"runat="server"><ahref="Test.aspx">首頁(yè)</a><ahref/">成都信息工程大學(xué)</a></asp:ContentPlaceHolder>4.1.4相對(duì)路徑的處理

在對(duì)模板頁(yè)的設(shè)計(jì)中,相對(duì)路徑的處理經(jīng)常是一件讓人頭痛的事情。如果使用的是靜態(tài)文字,這一問題不會(huì)困擾你。不過,如果需要在模板頁(yè)中添加圖片和鏈接,根據(jù)所使用的HTML標(biāo)簽或者ASP.NET服務(wù)器控件的不同,相對(duì)路徑就會(huì)有不同的解析方式。這時(shí)相對(duì)路徑的問題就可能發(fā)生。要解決如相對(duì)路徑問題,可以通過如下三種方式來(lái)進(jìn)行:1) 可以預(yù)先在模板頁(yè)里把圖片路徑寫成相對(duì)于內(nèi)容頁(yè)的地址。不過這會(huì)帶來(lái)混淆,限制模板頁(yè)使用的范圍,并且產(chǎn)生在設(shè)計(jì)環(huán)境里不正確顯示模板頁(yè)的負(fù)面效應(yīng)。2) 把HTML標(biāo)簽變成服務(wù)器端控件,這樣ASP.NET就會(huì)修復(fù)這個(gè)錯(cuò)誤。3) 在模板頁(yè)中使用方法來(lái)重新解析相對(duì)路徑,如下面的代碼所示:<imgid="img3"src="<%=Page.ResolveUrl("~/MasterPages/3.jpg")%>"alt="img3"/>4.1.5通過Web.config文件全局設(shè)置模板頁(yè)

如果創(chuàng)建一個(gè)Web應(yīng)用程序,它只有一個(gè)模板頁(yè),那么為站點(diǎn)內(nèi)的每個(gè)頁(yè)面都設(shè)置模板頁(yè)似乎有點(diǎn)過分。因此,還可以借助Web.config文件一次性對(duì)整個(gè)網(wǎng)站的所有頁(yè)面應(yīng)用模板頁(yè)。所要做的只是像下面的代碼這樣,在Web.config文件里面加入一<pages>節(jié)點(diǎn),并設(shè)置<pages>節(jié)點(diǎn)的masterPageFile屬性:<system.web><pagesmasterPageFile="~/MasterPages/Test.Master/></system.web>4.2在模板頁(yè)和內(nèi)容頁(yè)之間傳遞數(shù)據(jù)

4.2.1使用Page.Master屬性4.2.2使用MasterType指令4.2.3使用MasterPage.FindControl方法4.2.1使用Page.Master屬性Master屬性返回的是一般的MasterPage類。因此,必須把它轉(zhuǎn)換成特定類型的模板頁(yè)類,才能訪問模板頁(yè)的這些公有的成員。Testtest=(Test)Page.Master;Label1.Text="Labell:”+test.MyTxt;test.MyTxt="Label2:在內(nèi)容頁(yè)里修改模板頁(yè)的MyTxt屬性的值。";Label2.Text=test.MyTxt;4.2.2使用MasterType指令在內(nèi)容頁(yè)面代碼里面通過MasterType指令的VirtualPath厲性來(lái)指定相應(yīng).master文件的虛擬路徑就可以了<%@MasterTypeVirtualPath="~/Test.Master"%>4.2.3使用MasterType指令在內(nèi)容頁(yè)面代碼里面通過MasterType指令的VirtualPath厲性來(lái)指定相應(yīng).master文件的虛擬路徑就可以了<%@MasterTypeVirtualPath="~/Test.Master"%>在內(nèi)容頁(yè)面代碼里面添加好MasterType指令之后,就可以直接在內(nèi)容頁(yè)的后臺(tái)代碼里面通過訪問Page類的Master屬性來(lái)訪問模板頁(yè)的公有成員了,如Master.MyTxt,而無(wú)須再繼續(xù)創(chuàng)建模板頁(yè)的實(shí)例:Labell.Text="Label1:"+Master.MyTxt;Master.MyTxt="Label2:在內(nèi)容頁(yè)里修改模板頁(yè)的MyTxt屬性的值。";Label2.Text=Master.MyTxt;4.2.3使用MasterPage.FindControl方法可以通過MasterPage.FindControl()方法強(qiáng)行訪問模板頁(yè)上的某個(gè)控件。得到這個(gè)控件之后,就可以直接修改它。如在模板頁(yè)里加入一個(gè)Label控件:<asp:LabelID="Labell"runat="server"Text="Label"></asp:Label>然后可以在內(nèi)容頁(yè)的后臺(tái)代碼中來(lái)調(diào)用這個(gè)Label控件Labeltxt_msg=Master.FindControl("Label1")asLabel;if(txt_msg!=null){txt_msg.Text="修改后的值";}4.3以編程方式設(shè)置模板頁(yè)

通過編程方式來(lái)動(dòng)態(tài)設(shè)置模板頁(yè)只需設(shè)置Page.MasterPageFile屬性就可以了。但這一步必須在Page.Init事件階段完成,在這之后,再設(shè)置這一屬性會(huì)產(chǎn)生一個(gè)異常。如下面的代碼所示:protectedvoidPage_PreInit(objectsender,EventArgse){ Page.MasterPageFile="~/Test.Master";}在使用以編程方式來(lái)動(dòng)態(tài)設(shè)置模板頁(yè)時(shí),還必須注意如下幾點(diǎn):1)確保在Web.config文件中或者內(nèi)容頁(yè)面的@Page指令中沒有引用MasterPageFile的<pages>元素,只有這樣才會(huì)得到成功加載的頁(yè)面,并且引入了模板頁(yè)。2)確保內(nèi)容頁(yè)面沒有使用MasterType指令來(lái)創(chuàng)建對(duì)模板頁(yè)的強(qiáng)類型引用。3)確保內(nèi)容頁(yè)面和所設(shè)置的模板頁(yè)完全兼容。4.4嵌套模板頁(yè)4.4.1嵌套模板頁(yè)案例4.4.2

嵌套模板頁(yè)中的控件訪問4.4.2嵌套模板頁(yè)中的控件訪問

對(duì)于嵌套模板頁(yè)中的控件訪問,可以分為兩種情況進(jìn)行處理:1.對(duì)頂層模板頁(yè)控件的訪問

對(duì)頂層模板頁(yè)控件的訪問方法類似干對(duì)沒有嵌套的模板頁(yè)控件的訪問。唯一不同的是:沒有嵌套的模板頁(yè)控件的訪問只有一級(jí)Master屬性,而對(duì)頂層模板頁(yè)控件的訪問卻有多級(jí)Master屬性,而Master屬性的級(jí)數(shù)由嵌套的模板頁(yè)層數(shù)所決定。Labelone=Master.Master.FindControl("txt_one")asLabel;2.對(duì)除頂級(jí)模板頁(yè)以外的下一級(jí)模板頁(yè)控件的訪問

如果需要在內(nèi)容頁(yè)訪問SiteTwo.Master的txt_two控件,則必須先從第二層得到第一層的ContentPlaceHolder,來(lái)訪問其中的控件。如下面的代碼所示:4.5站點(diǎn)導(dǎo)航4.5.1站點(diǎn)地圖4.52SiteMapPath控件4.5.3Menu控件4.5.4TreeView控件4.5.1站點(diǎn)地圖站點(diǎn)地圖(SiteMap)主要為站點(diǎn)導(dǎo)航控件提供站點(diǎn)層次結(jié)構(gòu)信息,它的擴(kuò)展名是.sitemap,默認(rèn)名為Web.sitemap。只有保持默認(rèn)名稱的站點(diǎn)地圖才能被自動(dòng)加載,而且必須出現(xiàn)在網(wǎng)站根目錄中。站點(diǎn)地圖描述站點(diǎn)的邏輯結(jié)構(gòu)。當(dāng)需要添加或移除頁(yè)面時(shí),只需要修改站點(diǎn)地圖,而不需要修改所有網(wǎng)頁(yè)的超鏈接就能夠改變頁(yè)面導(dǎo)航。站點(diǎn)地圖必須遵循的原則:1.必須以一個(gè)<sitemap>元素開始;2.每一個(gè)Web頁(yè)面使用一個(gè)<siteMapNode>元素來(lái)表示,并且站點(diǎn)地圖必須包含在一個(gè)<siteMapNode>根元素中;3.在一個(gè)<siteMapNode>元素中可以包含多個(gè)<siteMapNode>元素;4.不允許出現(xiàn)重復(fù)的URL。siteMapNode屬性屬性名說(shuō)明title提供鏈接的文本描述description首先說(shuō)明該鏈接的作用,其次還用于鏈接上的ToolTip屬性。url描述文件在網(wǎng)站中的位置。如果文件在根目錄下,使用文件名,如"~/Default.aspx";如果文件位于子文件夾下,則在此屬性值中包含該文件夾,如“pic/default.aspx”4.5.2SiteMapPath控件SiteMapPath控件提供一個(gè)面包條(Breadcrumb),它是一行文本,顯示用戶當(dāng)前在網(wǎng)站結(jié)構(gòu)中的位置。該控件顯示了站點(diǎn)地圖中從根節(jié)點(diǎn)到當(dāng)前頁(yè)面的節(jié)點(diǎn)的完整路徑。與其他導(dǎo)航控件的不同之處是,SiteMapPath控件僅對(duì)向上返回到上一層級(jí)有用。SiteMapPath控件常用屬性屬性說(shuō)明PathSeparator獲取或設(shè)置一個(gè)字符串,該字符串在呈現(xiàn)的導(dǎo)航路徑中分隔SiteMapPath節(jié)點(diǎn)。默認(rèn)值是“>”PathDirection獲取或設(shè)置導(dǎo)航路徑節(jié)點(diǎn)的呈現(xiàn)順序,有RootToCurrent和CurrentToRoot兩個(gè)屬性值ParentLevelsDisplayed獲取或設(shè)置控件顯示的相對(duì)于當(dāng)前顯示節(jié)點(diǎn)的父節(jié)點(diǎn)級(jí)別數(shù)。默認(rèn)值是-1,表示沒有限制3.5.3Menu控件Menu(菜單)控件是一個(gè)支持層次型數(shù)據(jù)的Web控件,它由MenuItem(菜單項(xiàng))控件組成,頂級(jí)(級(jí)別0)菜單項(xiàng)稱為根菜單項(xiàng),具有父菜單項(xiàng)的菜單項(xiàng)統(tǒng)稱為子菜單項(xiàng)。通過Menu的Items屬性可以表示內(nèi)部的每個(gè)MenuItem,通過ChildItems屬性來(lái)表示菜單項(xiàng)下面的子菜單項(xiàng)。每個(gè)菜單項(xiàng)都具有Text屬性和Value屬性。Menu控件的語(yǔ)法<asp:MenuID="Menul"Orientation=="Horizontal|Vertical"runat="server"><Items><asp:MenuItemText="Menu控件上顯示的文本"Value="菜單項(xiàng)的任何其他數(shù)據(jù)"></asp:MenuItem></Items></asp:Menu>屬性說(shuō)明DisappearAfter獲取或設(shè)置鼠標(biāo)指針不再置于菜單上后顯示動(dòng)態(tài)菜單的持續(xù)時(shí)間Orientation獲取或設(shè)置Menu控件的呈現(xiàn)方向StaticDisplayLevels獲取或設(shè)置靜態(tài)菜單的菜單顯示級(jí)別數(shù)MaximumDynamicDisplayLevels獲取或設(shè)置動(dòng)態(tài)菜單的菜單呈現(xiàn)級(jí)別數(shù)SelectedValue獲取選擇菜單項(xiàng)的值SelectedItem獲取選擇的菜單項(xiàng)Menu控件的常用屬性4.5.4TreeView控件TreeView控件可按樹形結(jié)構(gòu)來(lái)顯示分層數(shù)據(jù),如目錄或文件目錄,用于顯示網(wǎng)站的各個(gè)部分,它可以顯示整個(gè)網(wǎng)站地圖或者網(wǎng)站地圖的一部分。可折疊樹的每個(gè)項(xiàng)都被稱為一個(gè)節(jié)點(diǎn)(TreeNode),由TreeNode對(duì)象表示,該控件由一個(gè)或多個(gè)節(jié)點(diǎn)構(gòu)成TreeView控件支持下列功能:1)站點(diǎn)導(dǎo)航。通過與SiteMapDataSource控件集成實(shí)現(xiàn)。2)數(shù)據(jù)綁定。TreeView控件通過數(shù)據(jù)綁定方式,能夠使控件節(jié)點(diǎn)與XML、表格、關(guān)系型數(shù)據(jù)等建立聯(lián)系。3)節(jié)點(diǎn)文本可以顯示為純文本,也可以顯示為超鏈接。4)能夠在每個(gè)節(jié)點(diǎn)旁顯示復(fù)選框。5)通過編程訪問TreeView對(duì)象模型,可以動(dòng)態(tài)創(chuàng)建樹、填充節(jié)點(diǎn)和設(shè)置屬性等。6)通過客戶端到服務(wù)器的回調(diào)填充節(jié)點(diǎn)(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論