ASP.NET 2.0數據教程:添加站點地圖
管理一個由大量網頁組成的網站的其中一個挑戰是要為訪問者瀏覽網站提供一個捷徑。作為開始,站點的導航結構必須被定義。下一步,這個結構必須轉換成適于導航的用戶界面元素,比如菜單或者位置導航。當有新頁面添加到站點和已有的頁面被移除的時候這個過程將要修改和校正。
在asp.net 2.0以前,開發者需要自己創建站點導航結構,維護它并且將它轉化為適于導航的用戶界面元素。在asp.net 2.0里,開發者可以利用非常靈活的且內置的站點導航系統。asp.net 2.0站點導航系統允許開發者定義一個站點地圖并且提供了可以訪問這些信息的API。
默認的asp.net站點地圖提供者期望站點地圖信息存儲在xml格式的文件中。但是,建立在提供者模型上的站點導航系統是可以被擴展的以支持多種方式儲存的站點地圖。Jeff Prosise的文章,The SQL Site Map Provider You’ve Been Waiting For展示了怎樣創建將站點地圖存儲在SQL Server數據庫里的提供者;另外一個選擇是基于文件系統的站點地圖提供者。
在這個指南中,我們仍然使用asp.NET2.0里默認的站點地圖提供者。要創建站點地圖,在解決方案管理器里右鍵點擊項目名稱,選擇添加新項,然后選擇站點地圖類型。命名為Web.sitemap然后單擊添加按鈕,則是添加站點地圖。
圖9:向你的項目中添加站點地圖
站點地圖文件是一個xml文件。注意:Visual Studio可以為站點地圖結構提供智能感知。站點地圖文件必須含有< siteMap>作為根節點,它必須至少含有一個< siteMapNode>子節點。這個< siteMapNode>元素又可以包含任意數量的< siteMapNode>子元素。
站點地圖模擬了文件系統。為每個文件夾添加一個< siteMapNode>元素,并且為每個aspx頁面添加一個< 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>
站點地圖定義了這個站點的導航結構,它是層次結構的以便描述站點中各種各樣的區域。在Web.sitemap中的每個< siteMapNode>元素描述了一個站點結構中的一個區域。
asp.net通過DotNET 框架中的SiteMap類顯示站點地圖的結構。這個類有一個CurrentNode屬性,它返回當前用戶正在訪問的節點的信息;RootNode屬性返回站點地圖的根節點信息(在我們的站點地圖中是Home)。CurrentNode呵RootNode屬性都返回SiteMapNode實例,SiteMapNode包含ParentNode,ChildNodes,NextSibling,PreviousSibling等屬性。添加站點地圖后,這些屬性允許站點地圖的層次可以被遍歷。
【編輯推薦】
- ASP.NET MVC路徑選擇系統構建
- ASP.NET MVC框架中的URL路徑選擇場景
- ASP.NET MVC 框架URL路徑選擇規則
- ASP.NET MVC框架:使用強類型類來傳遞ViewData
- 使用ASP.NET MVC框架創建電子商務網站