運行命令@Html.MvcSiteMap().Menu(false)
時,將顯示所有節點(即使拒絕訪問的那些節點)。拒絕節點可見
作爲一個例子我有控制器Financeiro
[Authorize(Roles = "Financeiro")]
public class homeController : baseController
{
public ActionResult index()
{
return View();
}
}
在Mvc.sitemap
<mvcSiteMapNode title="Financeiro" roles="Financeiro" area="Financeiro" clickable="false">
<mvcSiteMapNode title="Contas" controller="contas" action="index">
<mvcSiteMapNode title="Nova conta" action="novo" changeFrequency="Never" btnClass="btn-primary" />
</mvcSiteMapNode>
<mvcSiteMapNode title="Categorias" controller="categorias" action="index" />
<mvcSiteMapNode title="A Pagar" controller="apagar" action="index" description="Contas a pagar" />
<mvcSiteMapNode title="A Receber" controller="areceber" action="index" description="Contas a receber" />
</mvcSiteMapNode>
Ninject
我使用Ninject,並安裝包MvcSiteMapProvider.MVC4.DI.Ninject.Modules
在文件MvcSiteMapProviderModule.cs
this.Kernel.Bind<ISiteMapNodeVisibilityProviderStrategy>().To<SiteMapNodeVisibilityProviderStrategy>()
.WithConstructorArgument("defaultProviderName", "MvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider, MvcSiteMapProvider");
包
MvcSiteMapProvider.MVC4 4.0.6
MvcSiteMapProvider.MVC4.Core 4.0.6
MvcSiteMapProvider.MVC4.DI .... 4.0.6 MvcSiteMapProvider.Web 4.0.6
當用戶(有或沒有Financiero
角色)訪問系統,該節點被顯示
進行此更改後,我得到[此錯誤](http://snag.gy/rHIeY.jpg) 我[Mvc.sitemap這裏(http://snippi.com/s/mlih2tf) – ridermansb
我更新了我的答案。 – NightOwl888
我使用'[Authorize]',如果我使用'[Authorize]',爲什麼不應該這樣做? 在測試中,它的工作! 舉個例子,我會創建一個,並打開一個問題。謝謝。 – ridermansb