文章作者 webabcd 原文地址 http://www.cnblogs.com/webabcd/archive/2007/02/14/650773.html

 

介绍
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属性的节点)

【转】SiteMap(站点地图)<?xml version="1.0" encoding="utf-8" ?>
【转】SiteMap(站点地图)
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
【转】SiteMap(站点地图)  
<siteMapNode url="~/SiteMap/Test.aspx#1" title="首页"  description="首页描述">
【转】SiteMap(站点地图)    
<siteMapNode url="~/SiteMap/Test.aspx#2" title="频道1"  description="频道1描述" />
【转】SiteMap(站点地图)    
<siteMapNode url="~/SiteMap/Test.aspx#3" title="频道2" description="频道2描述" />
【转】SiteMap(站点地图)    
<siteMapNode siteMapFile="WebChild.sitemap">
【转】SiteMap(站点地图)    
</siteMapNode>
【转】SiteMap(站点地图)    
<siteMapNode url="~/SiteMap/Test.aspx#4" title="频道4" description="频道4描述" />
【转】SiteMap(站点地图)  
</siteMapNode>
【转】SiteMap(站点地图)
</siteMap>
【转】SiteMap(站点地图)

SiteMap/WebChild.sitemap(上面.sitemap文件某个节点的siteMapFile属性所指定的文件)
【转】SiteMap(站点地图)<?xml version="1.0" encoding="utf-8" ?>
【转】SiteMap(站点地图)
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
【转】SiteMap(站点地图)  
<siteMapNode url="~/SiteMap/Test.aspx#5" title="频道3"  description="频道3">
【转】SiteMap(站点地图)    
<siteMapNode url="~/SiteMap/Test.aspx#6" title="栏目1"  description="栏目1描述" />
【转】SiteMap(站点地图)    
<siteMapNode url="~/SiteMap/Test.aspx#7" title="栏目2"  description="栏目2描述" />
【转】SiteMap(站点地图)    
<siteMapNode url="~/SiteMap/Test.aspx#8" title="栏目3"  description="栏目3描述" />
【转】SiteMap(站点地图)  
</siteMapNode>
【转】SiteMap(站点地图)
</siteMap>
【转】SiteMap(站点地图)

站点地图测试
SiteMap/Test.aspx

SiteMap/Test.aspx.cs
【转】SiteMap(站点地图)using System;
【转】SiteMap(站点地图)
using System.Data;
【转】SiteMap(站点地图)
using System.Configuration;
【转】SiteMap(站点地图)
using System.Collections;
【转】SiteMap(站点地图)
using System.Web;
【转】SiteMap(站点地图)
using System.Web.Security;
【转】SiteMap(站点地图)
using System.Web.UI;
【转】SiteMap(站点地图)
using System.Web.UI.WebControls;
【转】SiteMap(站点地图)
using System.Web.UI.WebControls.WebParts;
【转】SiteMap(站点地图)
using System.Web.UI.HtmlControls;
【转】SiteMap(站点地图)
【转】SiteMap(站点地图)
public partial class SiteMap_Test : System.Web.UI.Page

站点地图测试(从数据库读数据)
SiteMap/FromDatabase.aspx

自定义站点地图提供程序(SqlServer方式)
SqlSiteMapProvider.cs(“sp_GetSiteMap”为读取站点地图数据的存储过程,详见源码)
【转】SiteMap(站点地图)using System;
【转】SiteMap(站点地图)
using System.Web;
【转】SiteMap(站点地图)
using System.Data.SqlClient;
【转】SiteMap(站点地图)
using System.Collections.Specialized;
【转】SiteMap(站点地图)
using System.Configuration;
【转】SiteMap(站点地图)
using System.Web.Configuration;
【转】SiteMap(站点地图)
using System.Collections.Generic;
【转】SiteMap(站点地图)
using System.Configuration.Provider;
【转】SiteMap(站点地图)
using System.Security.Permissions;
【转】SiteMap(站点地图)
using System.Data.Common;
【转】SiteMap(站点地图)
using System.Data;
【转】SiteMap(站点地图)
}

上面两个测试页面所需的web.config中的配置
【转】SiteMap(站点地图)<configuration>
【转】SiteMap(站点地图)  
<appSettings/>
【转】SiteMap(站点地图)  
<connectionStrings>
【转】SiteMap(站点地图)    
<add name="SqlConnectionString" connectionString="Data Source=."SQLEXPRESS;AttachDbFilename=|DataDirectory|"Database.mdf;Integrated Security=True;User Instance=True"/>
【转】SiteMap(站点地图)  
</connectionStrings>
【转】SiteMap(站点地图)  
<system.web>
【转】SiteMap(站点地图)    
<siteMap enabled="true" defaultProvider="XmlSiteMapProvider">
【转】SiteMap(站点地图)      
<providers>
【转】SiteMap(站点地图)        
<add name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="~/Web.sitemap"/>
【转】SiteMap(站点地图)        
<add name="XmlSiteMapProviderTest" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="~/Sitemap/Web.sitemap"/>
【转】SiteMap(站点地图)        
<add name="SqlSiteMapProvider" type="SqlSiteMapProvider" connectionStringName="SqlConnectionString" />
【转】SiteMap(站点地图)      
</providers>
【转】SiteMap(站点地图)    
</siteMap>
【转】SiteMap(站点地图)  
</system.web>
【转】SiteMap(站点地图)
</configuration>


OK
[源码下载]

 

相关文章:

  • 2021-09-10
  • 2021-06-10
  • 2021-12-24
  • 2022-03-02
猜你喜欢
  • 2021-08-07
  • 2021-12-24
  • 2021-12-24
  • 2021-11-27
  • 2022-12-23
  • 2021-12-24
相关资源
相似解决方案