您的位置:首页 > 编程语言 > ASP

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

2007-11-14 13:27 423 查看
Web.sitemap文件中siteMapNode节点有roles属性,但是直接设置并不起作用,查证资料后发现需在web.config文件中设置SiteMapProviders才可以。

<system.web>

...

<siteMapdefaultProvider="XmlSiteMapProvider"enabled="true">

<providers>

<addname="XmlSiteMapProvider"

description="SiteMapproviderwhichreadsin.sitemapXMLfiles."

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属性即可。但实际应用中发现只可以加在一级节点上,二级节点上无效,例子如下。

<?xmlversion="1.0"encoding="utf-8"?>

<siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">

<siteMapNodeurl=""title="系统管理"description=""roles="系统管理帐户,用户管理员">

<siteMapNodeurl="~/System/UserManage.aspx"title="用户管理"description=""/>

<siteMapNodeurl="~/System/CreateUser.aspx"title="创建用户"description=""/>

<siteMapNodeurl="~/System/CityManage.aspx"title="地市维护"description=""/>

</siteMapNode>

</siteMap>

另外查询MSDN,发现可以使用SiteMapProviders可以连接到数据库中读取sitemap

首先要使用SiteMapApi来作一个自定义的Provider

里面用到了一个存储过程

CREATEPROCEDUREproc_GetSiteMapASSELECT[ID],[Title],[Description],
然后在web.config里做如下设置

<configuration>

<connectionStrings>

<addname="SiteMapConnectionString"connectionString="..."/>

</connectionStrings>

<system.web>

<siteMapenabled="true"defaultProvider="AspNetSqlSiteMapProvider">

<providers>

<addname="AspNetSqlSiteMapProvider"

type="SqlSiteMapProvider,CustomProviders"

description="SQLServersitemapprovider"

securityTrimmingEnabled="true"

connectionStringName="SiteMapConnectionString"

/>

</providers>

</siteMap>

</system.web>

</configuration>


数据库sitemap表结构

CREATETABLE[dbo].[SiteMap](

[ID][int]NOTNULL,

[Title][varchar](32),

[Description][varchar](512),

[Url][varchar](512),

[Roles][varchar](512),

[Parent][int]

)ON[PRIMARY]

GO

ALTERTABLE[dbo].[SiteMap]ADD

CONSTRAINT[PK_SiteMap]PRIMARYKEYCLUSTERED

(

[ID]

)ON[PRIMARY]

GO

数据的实例



MSDN上SiteMapProviders说明地址:[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNETProvMod_Prt3.asp]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNETProvMod_Prt3.asp"target=_blank>,[Roles],[Parent]FROM[SiteMap]ORDERBY[ID]

[/code]
然后在web.config里做如下设置

<configuration>

<connectionStrings>

<addname="SiteMapConnectionString"connectionString="..."/>

</connectionStrings>

<system.web>

<siteMapenabled="true"defaultProvider="AspNetSqlSiteMapProvider">

<providers>

<addname="AspNetSqlSiteMapProvider"

type="SqlSiteMapProvider,CustomProviders"

description="SQLServersitemapprovider"

securityTrimmingEnabled="true"

connectionStringName="SiteMapConnectionString"

/>

</providers>

</siteMap>

</system.web>

</configuration>


数据库sitemap表结构

CREATETABLE[dbo].[SiteMap](

[ID][int]NOTNULL,

[Title][varchar](32),

[Description][varchar](512),

[Url][varchar](512),

[Roles][varchar](512),

[Parent][int]

)ON[PRIMARY]

GO

ALTERTABLE[dbo].[SiteMap]ADD

CONSTRAINT[PK_SiteMap]PRIMARYKEYCLUSTERED

(

[ID]

)ON[PRIMARY]

GO

数据的实例



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐