我有一個(簡單的)站點地圖,並試圖找出爲什麼某個子菜單是總是可見。ASP.NET web.sitemap - 角色似乎無法控制可見性?
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Login.aspx" title="Home" description="RivWorks" roles="*">
<siteMapNode url="" title="Dashboard" description="" roles="campaigns, auto_negotiation">
<siteMapNode url="CampaignBuilder.aspx" title="Campaign Manager" description="Manage your campaign settings" roles="campaigns" />
<siteMapNode url="ProductManager.aspx" title="Negotiation Manager" description="Manage your product and negotiation settings" roles="auto_negotiation" />
</siteMapNode>
<siteMapNode url="" title="Support Options" description="" roles="customers, customer_super, riv_admins, riv_super">
<siteMapNode url="ChangePassword.aspx" title="Change Password" description="" roles="customers, customer_super, riv_admins, riv_super" />
<siteMapNode url="http://rivworks.zendesk.com/requests/anonymous/new" title="Submit a Support Ticket" description="" roles="customers, customer_super, riv_admins, riv_super" />
<siteMapNode url="http://rivworks.zendesk.com/forums/49919/entries" title="Tips & Tricks" description="" roles="customers, customer_super, riv_admins, riv_super" />
</siteMapNode>
</siteMapNode>
</siteMap>
注:web.config設置
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider"
description="Default Site Map Provider"
type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>
我有 「儀表板」 的主菜單選項。在這個菜單項下,我有兩個選項:1)競選經理& 2)談判經理。現在,有趣的是,當我處於廣告系列角色 或的自動協商角色時,我看到了Dashboard和 BOTH子菜單項。這不是我預期的行爲。當我處於廣告系列角色 和自動協商角色時,我預計只能看到這兩個子菜單。該 OR情況下應該給我的儀表盤菜單項和一個 OR其他子項...
我在這裏做得不對或思維錯誤的方法?
TIA
謝謝。發現我引入的小錯誤。在我的元素中,我使用'?'代替 '*'。一旦我改變了這一切,開始正常工作。 –
2010-03-23 15:02:14
偉大的博客文章,這很好地解釋了這一點。 – Sprintstar 2011-11-28 12:47:01
偉大的鏈接,我永遠不會知道它這樣工作。 – 2013-08-07 10:26:15