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
里面用到了一个存储过程
<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
。
相关文章推荐
- 使用 根据语言环境不同 而显示不同的 资源本地化 ASP.NET 网页
- Asp.net ImageButton 根据编辑表单类型显示不同按钮图片
- 根据语言环境不同而显示不同的资源本地化ASP.NET 网页
- asp.net 根据值不同,在绑定时显示不同颜色
- 使用 根据语言环境不同 而显示不同的 资源本地化 ASP.NET 网页
- asp.net中jqgrid根据不同类别头部显示不同的列的实现方法
- asp.net2.0学习笔记:根据roles显示不同的sitemap
- Asp.net web 根据不同的用户权限显示不同的菜单
- 根据roles显示不同的sitemap
- ASP.NET导航控件TreeView根据登录用户显示不同的菜单
- 使用 根据语言环境不同 而显示不同的 资源本地化 ASP.NET 网页
- 根据roles显示不同的sitemap
- [ASP.NET 2.0]sitemap中根据角色自动隐藏菜单项的小提示
- 在ASP.NET 2.0中操作数据之十五:在GridView的页脚中显示统计信息
- 在ASP.NET 2.0中操作数据之十五:在GridView的页脚中显示统计信息
- Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)
- Scott Mitchell 的ASP.NET 2.0数据教程之二十九:: 用DataList和Repeater来显示数据
- Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)
- Scott Mitchell 的ASP.NET 2.0数据教程之二十九:: 用DataList和Repeater来显示数据
- 已解问题:ASP.NET界面在不同的分辨率下的不同显示