SiteMapPath 使用例子

 
SiteMapPath 使用例子
2008-10-15 13:32

SiteMapPath是ASP.NET 2.0 版包含导航控件中的一种,其它还包括 Menu 控件和TreeView 控件,这些控件使导航菜单的创建、自定义和维护变得很容易导航控件的一种。

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 >


SiteMap/Test.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class SiteMap_Test : System.Web.UI.Page
{
    
protectedvoid Page_Load(object sender, EventArgs e)
    
{
        
// 获取当前节点的Title
         lbl.Text= "当前节点标题:"+ SiteMap.CurrentNode.Title+ "<br />";

        
// 取得url为“~/Default.aspx”的SiteMapNode
         SiteMapNode smn= SiteMap.Provider.FindSiteMapNode("~/Default.aspx");
         lbl.Text
+= "Default.aspx节点的Url:"+ smn.Url;
     }

}


上面测试页面所需的web.config中的配置

< configuration >
  
< appSettings />
  
< connectionStrings >
    
< add name ="SqlConnectionString" connectionString ="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" />
  
</ connectionStrings >
  
< system .web >
    
< siteMap enabled ="true" defaultProvider ="XmlSiteMapProvider" >
      
< providers >
        
< add name ="XmlSiteMapProvider" type ="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile ="~/Web.sitemap" />
        
< add name ="XmlSiteMapProviderTest" type ="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile ="~/Sitemap/Web.sitemap" />
        
< add name ="SqlSiteMapProvider" type ="SqlSiteMapProvider" connectionStringName ="SqlConnectionString" />
      
</ providers >
    
</ siteMap >
  
</ system.web >
</ configuration >

你可能感兴趣的:(server,url,asp.net,asp,menu,encoding)