您的位置:知识库 »

温故知新ASP.NET 2.0(C#)(3) - SiteMap(站点地图)

作者: webabcd  发布时间: 2008-09-04 14:39  阅读: 8329 次  推荐: 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

热门文章

    最新文章

      最新新闻

        热门新闻