ASP.NET 2.0 內建站點導航架構,以 XML 格式的 Web.sitemap 定義網站邏輯結構,搭配 SiteMapDataSource 資料源控制項與 TreeView、Menu、SiteMapPath 導航控制項,快速建構專業級網站導航體驗。
Web.sitemap。<?xml version="1.0" encoding="utf-8"?>
<siteMap xmlns="https://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
<siteMapNode url="default.aspx" title="Home" description="My Web Site">
<siteMapNode url="~/products/default.aspx" title="Products">
<siteMapNode url="~/products/product1.aspx" title="First Product" />
<siteMapNode url="~/products/product2.aspx" title="Second Product" />
</siteMapNode>
<siteMapNode url="~/services/default.aspx" title="Services">
<siteMapNode url="~/services/service1.aspx" title="First Service" />
<siteMapNode url="~/services/service2.aspx" title="Second Service" />
</siteMapNode>
<siteMapNode url="contact.aspx" title="Contact Us" />
</siteMapNode>
</siteMap>
| 屬性 | 說明 |
|---|---|
title | 導航控制項顯示標題文字 |
url | 目標頁面相對 URL,支援 ~ 應用程式根目錄 |
description | 工具提示文字,滑鼠懸停顯示 |
roles | 授權角色清單(逗號分隔),配合安全性修剪自動隱藏無權限節點 |
| 控制項 | 呈現樣式 | 典型用途 |
|---|---|---|
SiteMapPath | 麵包屑路徑 | 頁面頂部:Home > Products > Product1 |
TreeView | 可摺疊階層樹狀 | 側邊欄完整站點地圖 |
Menu | 水平/垂直動態選單 | 頂部導覽列、側邊選單 |
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1">
<NodeStyle Font-Names="Verdana" Font-Size="10pt" />
<HoverNodeStyle Font-Underline="True" ForeColor="Red" />
</asp:TreeView>
<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1"
Orientation="Horizontal" StaticDisplayLevels="2" MaximumDynamicDisplayLevels="3">
<StaticMenuStyle BackColor="#336699" />
<StaticMenuItemStyle ForeColor="White" />
<DynamicMenuStyle BackColor="White" />
</asp:Menu>
<asp:SiteMapPath ID="SiteMapPath1" runat="server" />
web.config 設定提供者 securityTrimmingEnabled="true":
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap" securityTrimmingEnabled="true" />
</providers>
</siteMap>
導航控制項自動依據使用者角色與 <authorization> 規則過濾節點。
SiteMap.CurrentNode:目前頁面對應節點。SiteMap.RootNode:根節點,遞迴走訪。SiteMap.FindSiteMapNode(url):依 URL 查找。SiteMapResolve 事件:動態修改節點屬性/URL。.sitemap 受 ASP.NET 保護防直接下載。roles 屬性聲明節點存取需求,避免硬式編碼。SiteMapPath 提供麵包屑,增強使用者定向感。icon、target)擴充導航呈現,配合 MenuItemDataBound / TreeNodeDataBound 事件套用。站點導航架構將結構定義與呈現分離,讓開發者專注業務邏輯,輕鬆打造可維護、可擴充、安全整合的專業網站導航體驗。