之前没有用过sitemap,最近做项目才接触到sitemap,在此记录基本用法,以备后用。
环境:vs2008
首先创建sitemap文件,右击project->Add new item,弹出选项框,选择Site Map,选择Ok。好了sitemap文件就创建好了。
下面开始编辑它的内容,新建的sitemap文件中默认内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0%22 >
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>
<siteMapNode>的属性:
Url - 链接地址
Title - 显示的标题
Description - 描述(ToolTip)
resourceKey - 本地化用的(要在<siteMap>节点加上这个属性enableLocalization=true)
securityTrimmingEnabled - 是否让sitemap支持安全特性
roles - 哪些角色可以访问当前节点,多角色用逗号隔开(需要将securityTrimmingEnabled设置为true)
siteMapFile - 引用另一个sitemap文件
注:应用权限的时候,Web.config中的SiteMap节点的Provider也要有相对应的配置(securityTrimmingEnabled="true")
例:
<siteMapNode url="" title="" description="" roles="Administrator,Manager,NormalUser">
<siteMapNode url="~/Admin/ManageUser/Manage_Users.aspx" title="Manage Users" description="" roles="Administrator" />
<siteMapNode url="~/Admin/HotelInfo/Manage_Hotels.aspx" title="Manage Hotels" description="" roles="Manager"/>
<siteMapNode url="~/Admin/RegionInfo/Region_List.aspx" title="Manage Regions" description="" roles="Administrator"/>
<siteMapNode url="~/Admin/ManageTable/Manage_SelfDetails.aspx" title="Manage Tables" description="" roles="NormalUser"/>
其中roles是需要进行设置的,可在每个目录下的web.config中设置。
接下来在web.config中配置sitemap,
<siteMap defaultProvider="SiteMapProvider">
<providers>
<add name="SiteMapProvider"
type="System.Web.XmlSiteMapProvider"
securityTrimmingEnabled="true"
siteMapFile="Web.sitemap"/>
</providers>
</siteMap>
最后在MasterPage中应用sitemap,
<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSourceDefault" Orientation="Horizontal">
<StaticMenuItemStyle ForeColor="White" ItemSpacing="10px" Font-Underline="false"/>
<StaticSelectedStyle ForeColor="#99FFFF" />
<DynamicSelectedStyle ForeColor="#99FFFF" />
</asp:Menu>
<asp:SiteMapDataSource ID="SiteMapDataSourceDefault" runat="server" SiteMapProvider="SiteMapProvider" ShowStartingNode="false"/>