重新过一遍ASP.NET 2.0(C#)(3) - SiteMap(站点地图)
2007-06-27 16:37
447 查看
介绍
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中要有相对应的配置
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
<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
站点地图测试(从数据库读数据)
SiteMap/FromDatabase.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1">
</asp:TreeView>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" SiteMapProvider="SqlSiteMapProvider" />
</asp:Content>
自定义站点地图提供程序(SqlServer方式)
SqlSiteMapProvider.cs(“sp_GetSiteMap”为读取站点地图数据的存储过程,详见源码)
using System;
using System.Web;
using System.Data.SqlClient;
using System.Collections.Specialized;
using System.Configuration;
using System.Web.Configuration;
using System.Collections.Generic;
using System.Configuration.Provider;
using System.Security.Permissions;
using System.Data.Common;
using System.Data;
public class SqlSiteMapProvider : StaticSiteMapProvider
<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>
OK
[源码下载]
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中要有相对应的配置
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
<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
站点地图测试(从数据库读数据)
SiteMap/FromDatabase.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1">
</asp:TreeView>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" SiteMapProvider="SqlSiteMapProvider" />
</asp:Content>
自定义站点地图提供程序(SqlServer方式)
SqlSiteMapProvider.cs(“sp_GetSiteMap”为读取站点地图数据的存储过程,详见源码)
using System;
using System.Web;
using System.Data.SqlClient;
using System.Collections.Specialized;
using System.Configuration;
using System.Web.Configuration;
using System.Collections.Generic;
using System.Configuration.Provider;
using System.Security.Permissions;
using System.Data.Common;
using System.Data;
public class SqlSiteMapProvider : StaticSiteMapProvider
<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>
OK
[源码下载]
相关文章推荐
- 温故知新ASP.NET 2.0(C#)(3) - SiteMap(站点地图)
- 温故知新ASP.NET 2.0(C#)(3) - SiteMap(站点地图)
- 温故知新ASP.NET 2.0(C#)(3) - SiteMap(站点地图)
- 重新过一遍ASP.NET 2.0(C#)(2) - Themes(主题)(转)
- 重新过一遍ASP.NET 2.0(C#)(5) - Localization(本地化,多语言)
- 重新过一遍ASP.NET 2.0(C#)(6) - Membership&RoleManager(成员资格和角色管理)
- 重新过一遍ASP.NET 2.0(C#)(7) - Profile(存储用户配置)
- 重新过一遍ASP.NET 2.0(C#)(2) - Themes(主题)
- 重新过一遍ASP.NET 2.0(C#)(7) - Profile(存储用户配置测试)
- 重新过一遍ASP.NET 2.0(C#)(8) - DataSourceControl(数据源控件)
- 重新过一遍asp.net 2.0(C#)母页和主题
- 重新过一遍ASP.NET 2.0(C#)(4) - Cache&SqlCache
- 重新过一遍ASP.NET 2.0(C#)(5) - Localization(本地化,多语言)
- 重新过一遍ASP.NET 2.0(C#)(4) - Cache&SqlCacheDependency(缓存和SqlCacheDependency特性)(转帖)
- 重新过一遍ASP.NET 2.0(C#)(6) - Membership&RoleManager(成员资格和角色管理)
- 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法(一)
- 关于ASP.NET 中站点地图sitemap 的使用
- 关于ASP.NET 中站点地图sitemap 的使用【转xugang】
- 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法(二)
- 关于ASP.NET 中站点地图sitemap 的使用