1

コマンドを実行すると、@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を使用し、パッケージをインストールしました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ロールの有無にかかわらず) がシステムにアクセスすると、ノードが表示されます。

4

1 に答える 1