控制页面可见性
可能存在一些情况其中希望允许用户知道页面的存在性即使拒绝用户访问该页面这样可以提供一个链接给用户但当他们单击该链接时在他们可以查看该页面之前提示作为具有足够特权的用户登录为了实现这一点可以将一个roles属性(参见下面代码中添加阴影的行)添加到websitemap文件这确保某些用户可以看到指定页面的链接即使该用户不能够查看页面自身的内容下面是一个示例
<siteMapNode title=Administration url=Admin/Adminaspx
roles=ReporterOwnerManagerAdministrator>
<siteMapNode title=Edit News url=Admin/EditNewsaspx
description=Edit club news
roles=ReporterOwnerManagerAdministrator />
<siteMapNode title=Schedule Match url=Admin/ScheduleMatchaspx
description=Schedule a Match
roles=ManagerOwner/>
注意Adminaspx页面上的roles属性声明Reporters Owners Managers和Administrators应该知道Adminaspx页面的存在性将该页面与ScheduleMatchaspx页面进行对比您将看到只有Managers或Owners可以查看能够调度比赛的链接
如果作为Christi登录到站点则是Reporter角色的成员因此即使取消对所有管理页面的访问仍然可以看到Adminaspx和EditNewsaspx页面的链接但不会看到ScheduleMatchasp页面的链接
因为Webconfig文件和websitemap文件中的roles属性合作控制可见性和访问理解它们如何合作的最佳方法是通过示例来查看它们!
对于这个试一试练习确保正在使用Wrox United代码的第章版本出于这个示例的目的稍微修改了提供给这个示例的代码
()首先查看websitemap文件中的代码该文件包含与用于Wrox United应用程序中相同的代码下面是从该文件中提取的代码并且突出显示了roles属性的使用
<siteMapNode title=Fan Club url=FanClubaspx>
<siteMapNode title=Add Match Report url=FanClub/FanClubMatchReportaspx
description=Add a match report
roles=FanClubMember />
<siteMapNode title=Upload Pictures url=FanClub/FanClubPicturesaspx
description=Upload pictures or video of a match
roles=FanClubMember />
</siteMapNode>
<siteMapNode title=Administration url=Admin/Adminaspx
roles=ReporterOwnerManagerAdministrator>
<siteMapNode title=Edit News url=Admin/EditNewsaspx
description=Edit club news
roles=ReporterOwnerManagerAdministrator />
<siteMapNode title=Schedule Match url=Admin/ScheduleMatchaspx
description=Schedule a Match
roles=ManagerOwner/>
<siteMapNode title=Edit Squad url=Admin/EditSquadaspx
description=Edit the players in the squad
roles=Owner/>
<siteMapNode title=Update Score url=Admin/MatchScoreaspx
description=Edit the score for a match in progress
roles=Reporter/>
<siteMapNode title=Match Report url=Admin/MatchReportaspx
description=Upload or edit a match report
roles=Reporter />
<siteMapNode title=Shop url=Admin/UpdateProductsaspx
description=Update products
roles=Administrator />
<siteMapNode title=User Admin url=Admin/UserAdminaspx
description=Administer users
roles=Administrator />
</siteMapNode>
[] [] [] [] [] []