asp.net 2.0中根据roles显示不同的sitemap

Web.sitemap文件中siteMapNode节点有roles属性,但是直接设置并不起作用,查证资料后发现需在web.config文件中设置Site Map Providers才可以。

 

< system .web >
...

  
< siteMap  defaultProvider ="XmlSiteMapProvider"  enabled ="true" >
      
< providers >
        
< add  name ="XmlSiteMapProvider"
    description
="SiteMap provider which reads in .sitemap XML files."
    type
="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    siteMapFile
="Web.sitemap"
    securityTrimmingEnabled
="true" />
      
</ providers >
    
</ siteMap >
</ system.web >

注意siteMap这一节, 关键是这里的设置,然后在Web.sitemap文件中相应的siteMapNode节点上加上roles属性即可。但实际应用中发现只可以加在一级节点上,二级节点上无效,例子如下。

 

<? xml version="1.0" encoding="utf-8"  ?>
< siteMap  xmlns ="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"   >
    
< siteMapNode  url =""  title ="系统管理"   description =""  roles ="系统管理帐户,用户管理员" >
        
< siteMapNode  url ="~/System/UserManage.aspx"  title ="用户管理"   description ="" />
        
< siteMapNode  url ="~/System/CreateUser.aspx"  title ="创建用户"   description ="" />
        
< siteMapNode  url ="~/System/CityManage.aspx"  title ="地市维护"   description ="" />   
    
</ siteMapNode >
</ siteMap >

 

另外查询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表结构

 

CREATE   TABLE   [ dbo ] . [ SiteMap ]  (
    
[ ID ]            [ int ]   NOT   NULL ,
    
[ Title ]         [ varchar ]  ( 32 ),
    
[ Description ]   [ varchar ]  ( 512 ),
    
[ Url ]           [ varchar ]  ( 512 ),
    
[ Roles ]         [ varchar ]  ( 512 ),
    
[ Parent ]        [ int ]
ON   [ PRIMARY ]
GO

ALTER   TABLE   [ dbo ] . [ SiteMap ]   ADD  
    
CONSTRAINT   [ PK_SiteMap ]   PRIMARY   KEY   CLUSTERED  
    (
        
[ ID ]
    )  
ON   [ PRIMARY ]  
GO

数据的实例


MSDN上Site Map Providers说明地址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNETProvMod_Prt3.asp







转载于:https://www.cnblogs.com/luq885/archive/2007/11/14/959077.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值