溫故知新ASP.NET 2.0(C#)(3) - SiteMap(站點地圖)

作者: webabcd  發布時間: 2008-09-04 14:39  閱讀: 8137 次  推薦: 0   原文鏈接   [收藏]  
 

系列文章導航:

溫故知新ASP.NET 2.0(C#)(1) - MasterPage(母版頁)

溫故知新ASP.NET 2.0(C#)(1) - MasterPage(母版頁)

溫故知新ASP.NET 2.0(C#)(2) - Themes(主題)

溫故知新ASP.NET 2.0(C#)(3) - SiteMap(站點地圖)

溫故知新ASP.NET 2.0(C#)(4) - 緩存&SqlCacheDependency

溫故知新ASP.NET 2.0(C#)(5) - Localization

溫故知新ASP.NET 2.0(C#)(8) - DataSourceControl

溫故知新ASP.NET 2.0(C#)(6) - Membership&RoleManager

溫故知新ASP.NET 2.0(C#)(7) - Profile

溫故知新ASP.NET 2.0(C#)(8) - DataSourceControl

 


介紹
ASP.NET 2.0 中的站點導航提供程序向應用程序中的頁公開導航信息,使您可以獨立于頁的實際物理布局定義站點的結構。默認站點導航提供程序基于XML,但通過為站點地圖編寫自定義提供程序,也可以從任意后端公開此信息。

關鍵
1、創建.sitemap文件,其實就是一個xml文件,包括有著層次結構的<siteMapNode>元素

2、<siteMapNode>元素的屬性:
  Url - 鏈接地址
  Title - 顯示的標題
  Description - 描述(ToolTip)
  resourceKey - 本地化用的(要在<siteMap>節點加上這個屬性enableLocalization=true)   
  securityTrimmingEnabled - 是否讓sitemap支持安全特性
  roles - 哪些角色可以訪問當前節點,多角色用逗號隔開(需要將securityTrimmingEnabled設置為true)
  siteMapFile - 引用另一個sitemap文件
  注:應用權限的時候,Web.config中的SiteMap節點的Provider也要有相對應的配置(securityTrimmingEnabled="true"

3、可以通過SiteMap和SiteMapNode類訪問站點地圖數據

4、自定義站點地圖提供程序應該寫一個繼承自StaticSiteMapProvider的類

5、XmlSiteMapProvider要求站點地圖節點具有唯一的URL

示例
SiteMap/Web.sitemap(包括一個有siteMapFile屬性的節點)

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/SiteMap/Test.aspx#1" title="首頁"  description="首頁描述">
    <siteMapNode url="~/SiteMap/Test.aspx#2" title="頻道1"  description="頻道1描述" />
    <siteMapNode url="~/SiteMap/Test.aspx#3" title="頻道2" description="頻道2描述" />
    <siteMapNode siteMapFile="WebChild.sitemap">
    </siteMapNode>
    <siteMapNode url="~/SiteMap/Test.aspx#4" title="頻道4" description="頻道4描述" />
  </siteMapNode>
</siteMap>

SiteMap/WebChild.sitemap(上面.sitemap文件某個節點的siteMapFile屬性所指定的文件)
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/SiteMap/Test.aspx#5" title="頻道3"  description="頻道3">
    <siteMapNode url="~/SiteMap/Test.aspx#6" title="欄目1"  description="欄目1描述" />
    <siteMapNode url="~/SiteMap/Test.aspx#7" title="欄目2"  description="欄目2描述" />
    <siteMapNode url="~/SiteMap/Test.aspx#8" title="欄目3"  description="欄目3描述" />
  </siteMapNode>
</siteMap>

站點地圖測試
SiteMap/Test.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Test.aspx.cs"
    Inherits="SiteMap_Test" Title="站點地圖測試" 
%>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <p>
        <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1">
        </asp:TreeView>
        <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource2" Orientation="Horizontal">
        </asp:Menu>
        <%--顯示根節點的數據源--%>
        <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" SiteMapProvider="XmlSiteMapProviderTest" />
        <%--不顯示根節點的數據源--%>
        <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" SiteMapProvider="XmlSiteMapProviderTest"
            ShowStartingNode="false" />
    </p>
    <p>
        編碼方式訪問節點信息如下<br />
        <asp:Label ID="lbl" runat="server" BackColor="#DDDDDD" />
    </p>
</asp:Content>
 

 

0
0
 
標簽:ASP.NET SiteMap
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()