使用Menu+TreeView+sitemap+SiteMapDataSource可以快速创建动态导航
asp.net提供的Provider是XmlSiteMapProvider,如果要使用SQL SERVER数据库,则要继承SiteMapProvider,重写部分方法.MSDN上已经有实现的SqlSiteMapProvider,可用于Sql7/2000/2005.
详细内容: http://www.microsoft.com/china/msdn/library/data/sqlserver/0602WickedCode.mspx?mfr=true (中文)
http://msdn.microsoft.com/zh-cn/magazine/cc163787(en-us).aspx(英文)
使用SqlSiteMapProvider(以下内容都可在上面链接页面中找到,英文页面更加详细)
1.创建数据库(没有具体要求,可以用aspnetdb)
2.创建SiteMap表和存储过程
CREATE TABLE [dbo].[SiteMap] (
[ID] [int] NOT NULL,
[Title] [varchar] (32) NOT NULL,
[Description] [varchar] (512),
[Url] [varchar] (512),
[Roles] [varchar] (512),
[Parent] [int]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[SiteMap] ADD
CONSTRAINT [PK_ID] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
GO
3.首先注册缓存:
aspnet_regSQL –S localhost –E –d 数据库名 -ed
aspnet_regSQL –S localhost –E –d 数据库名 –t SiteMap -et
4.配置Config:
<connectionStrings>
<add name="SiteMapConnectionString"
connectionString="server=localhost;database=数据库名;uid=sa;pwd="
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<siteMap>
<providers>
<add name="SqlSiteMapProvider" type="SqlSiteMapProvider" securityTrimmingEnabled="true"
connectionStringName="SiteMapConnectionString"
sqlCacheDependency="CommandNotification" />
</providers>
</siteMap>
<caching>
<sqlCacheDependency enabled="true" pollTime="5000">
<databases>
<add name="aspnetdb"
connectionStringName="SiteMapConnectionString" />
</databases>
</sqlCacheDependency>
</caching>
</system.web>
5.剩下的工作就可以像web.sitemap一样使用SiteMapDataSource+Menu/TreeView制作动态导航了