ASP.NET 2.0數(shù)據(jù)教程:添加站點(diǎn)地圖
管理一個(gè)由大量網(wǎng)頁(yè)組成的網(wǎng)站的其中一個(gè)挑戰(zhàn)是要為訪問者瀏覽網(wǎng)站提供一個(gè)捷徑。作為開始,站點(diǎn)的導(dǎo)航結(jié)構(gòu)必須被定義。下一步,這個(gè)結(jié)構(gòu)必須轉(zhuǎn)換成適于導(dǎo)航的用戶界面元素,比如菜單或者位置導(dǎo)航。當(dāng)有新頁(yè)面添加到站點(diǎn)和已有的頁(yè)面被移除的時(shí)候這個(gè)過程將要修改和校正。
在asp.net 2.0以前,開發(fā)者需要自己創(chuàng)建站點(diǎn)導(dǎo)航結(jié)構(gòu),維護(hù)它并且將它轉(zhuǎn)化為適于導(dǎo)航的用戶界面元素。在asp.net 2.0里,開發(fā)者可以利用非常靈活的且內(nèi)置的站點(diǎn)導(dǎo)航系統(tǒng)。asp.net 2.0站點(diǎn)導(dǎo)航系統(tǒng)允許開發(fā)者定義一個(gè)站點(diǎn)地圖并且提供了可以訪問這些信息的API。
默認(rèn)的asp.net站點(diǎn)地圖提供者期望站點(diǎn)地圖信息存儲(chǔ)在xml格式的文件中。但是,建立在提供者模型上的站點(diǎn)導(dǎo)航系統(tǒng)是可以被擴(kuò)展的以支持多種方式儲(chǔ)存的站點(diǎn)地圖。Jeff Prosise的文章,The SQL Site Map Provider You’ve Been Waiting For展示了怎樣創(chuàng)建將站點(diǎn)地圖存儲(chǔ)在SQL Server數(shù)據(jù)庫(kù)里的提供者;另外一個(gè)選擇是基于文件系統(tǒng)的站點(diǎn)地圖提供者。
在這個(gè)指南中,我們?nèi)匀皇褂胊sp.NET2.0里默認(rèn)的站點(diǎn)地圖提供者。要?jiǎng)?chuàng)建站點(diǎn)地圖,在解決方案管理器里右鍵點(diǎn)擊項(xiàng)目名稱,選擇添加新項(xiàng),然后選擇站點(diǎn)地圖類型。命名為Web.sitemap然后單擊添加按鈕,則是添加站點(diǎn)地圖。
圖9:向你的項(xiàng)目中添加站點(diǎn)地圖
站點(diǎn)地圖文件是一個(gè)xml文件。注意:Visual Studio可以為站點(diǎn)地圖結(jié)構(gòu)提供智能感知。站點(diǎn)地圖文件必須含有< siteMap>作為根節(jié)點(diǎn),它必須至少含有一個(gè)< siteMapNode>子節(jié)點(diǎn)。這個(gè)< siteMapNode>元素又可以包含任意數(shù)量的< siteMapNode>子元素。
站點(diǎn)地圖模擬了文件系統(tǒng)。為每個(gè)文件夾添加一個(gè)< siteMapNode>元素,并且為每個(gè)aspx頁(yè)面添加一個(gè)< siteMapNode>子元素,如此:
Web.sitemap:
- < ?xml version="1.0" encoding="utf-8" ?>
- < siteMap xmlns="http://schemas.microsoft.com/aspNet/SiteMap-File-1.0" >
- < siteMapNode url="~/Default.aspx" title="Home" description="Home">
- < siteMapNode title="Basic Reporting"
- url="~/BasicReporting/Default.aspx"
- description="Basic Reporting Samples">
- < siteMapNode url="~/BasicReporting/SimpleDisplay.aspx"
- title="Simple Display"
- description="Displays the complete contents
- of a database table." />
- < siteMapNode url="~/BasicReporting/DeclarativeParams.aspx"
- title="Declarative Parameters"
- description="Displays a subset of the contents
- of a database table using parameters." />
- < siteMapNode url="~/BasicReporting/ProgrammaticParams.aspx"
- title="Setting Parameter Values"
- description="Shows how to set parameter values
- programmatically." />
- < /siteMapNode>
- < siteMapNode title="Filtering Reports"
- url="~/Filtering/Default.aspx"
- description="Samples of Reports that Support Filtering">
- < siteMapNode url="~/Filtering/FilterByDropDownList.aspx"
- title="Filter by Drop-Down List"
- description="Filter results using a drop-down list." />
- < siteMapNode url="~/Filtering/MasterDetailsDetails.aspx"
- title="Master-Details-Details"
- description="Filter results two levels down." />
- < siteMapNode url="~/Filtering/DetailsBySelecting.aspx"
- title="Details of Selected Row"
- description="Show detail results for a selected item in a GridView." />
- < /siteMapNode>
- < siteMapNode title="Customized Formatting"
- url="~/CustomFormatting/Default.aspx"
- description="Samples of Reports Whose Formats are Customized">
- < siteMapNode url="~/CustomFormatting/CustomColors.aspx"
- title="Format Colors"
- description="Format the grid's colors based
- on the underlying data." />
- < siteMapNode
- url="~/CustomFormatting/GridViewTemplateField.aspx"
- title="Custom Content in a GridView"
- description="Shows using the TemplateField to
- customize the contents of a field in a GridView." />
- < siteMapNode
- url="~/CustomFormatting/DetailsViewTemplateField.aspx"
- title="Custom Content in a DetailsView"
- description="Shows using the TemplateField to customize
- the contents of a field in a DetailsView." />
- < siteMapNode url="~/CustomFormatting/FormView.aspx"
- title="Custom Content in a FormView"
- description="Illustrates using a FormView for a
- highly customized view." />
- < siteMapNode url="~/CustomFormatting/SummaryDataInFooter.aspx"
- title="Summary Data in Footer"
- description="Display summary data in the grids footer." />
- < /siteMapNode>
- < /siteMapNode>
- < /siteMap>
站點(diǎn)地圖定義了這個(gè)站點(diǎn)的導(dǎo)航結(jié)構(gòu),它是層次結(jié)構(gòu)的以便描述站點(diǎn)中各種各樣的區(qū)域。在Web.sitemap中的每個(gè)< siteMapNode>元素描述了一個(gè)站點(diǎn)結(jié)構(gòu)中的一個(gè)區(qū)域。
asp.net通過DotNET 框架中的SiteMap類顯示站點(diǎn)地圖的結(jié)構(gòu)。這個(gè)類有一個(gè)CurrentNode屬性,它返回當(dāng)前用戶正在訪問的節(jié)點(diǎn)的信息;RootNode屬性返回站點(diǎn)地圖的根節(jié)點(diǎn)信息(在我們的站點(diǎn)地圖中是Home)。CurrentNode呵RootNode屬性都返回SiteMapNode實(shí)例,SiteMapNode包含ParentNode,ChildNodes,NextSibling,PreviousSibling等屬性。添加站點(diǎn)地圖后,這些屬性允許站點(diǎn)地圖的層次可以被遍歷。
【編輯推薦】
- ASP.NET MVC路徑選擇系統(tǒng)構(gòu)建
- ASP.NET MVC框架中的URL路徑選擇場(chǎng)景
- ASP.NET MVC 框架URL路徑選擇規(guī)則
- ASP.NET MVC框架:使用強(qiáng)類型類來(lái)傳遞ViewData
- 使用ASP.NET MVC框架創(chuàng)建電子商務(wù)網(wǎng)站