Web.sitemap文件中siteMapNode节点有roles属性,但是直接设置并不起作用,查证资料后发现需在web.config文件中设置Site Map Providers才可以。
注意siteMap这一节, 关键是这里的设置,然后在Web.sitemap文件中相应的siteMapNode节点上加上roles属性即可。但实际应用中发现只可以加在一级节点上,二级节点上无效,例子如下。
另外查询MSDN,发现可以使用Site Map Providers可以连接到数据库中读取sitemap
首先要使用SiteMapApi来作一个自定义的Provider
里面用到了一个存储过程
CREATE PROCEDURE proc_GetSiteMap AS SELECT [ID], [Title],[Description], [Url], [Roles], [Parent] FROM [SiteMap] ORDER BY [ID]
然后在web.config里做如下设置
<configuration>
<connectionStrings>
<add name="SiteMapConnectionString" connectionString="..." />
</connectionStrings>
<system.web>
<siteMap enabled="true" defaultProvider="AspNetSqlSiteMapProvider">
<providers>
<add name="AspNetSqlSiteMapProvider"
type="SqlSiteMapProvider, CustomProviders"
description="SQL Server site map provider"
securityTrimmingEnabled="true"
connectionStringName="SiteMapConnectionString"
/>
</providers>
</siteMap>
</system.web>
</configuration>
数据库sitemap表结构
数据的实例
MSDN上Site Map Providers说明地址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNETProvMod_Prt3.asp
。