技术开发 频道

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


【IT168技术文档】

介绍
  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
相关文章