2016-12-09 18 views
0

私はメニュー構造を作成するために、NugetパッケージMvcSiteMapProviderを使用しています。私は "DTLSA"と呼ばれるタブを持っていて、ユーザーが "Application Status"と "Apply Now"だけを表示したいと思ったときにタブが表示されます。したがって、「人員」以下の人物はすべて構造内に隠されます。しかし、ユーザーが "Personnel"やその他のページにいる場合、 "DTLSA"にCSSクラスを "アクティブ"にして欲しいと思っています(これが私がここにいる唯一の理由です)。 visibility=!*を設定すると、DTLSAタブがアクティブに設定されません。アクティブにすることは可能ですが、これらのオプションはドロップダウンリストに表示されないようにしてください。mvcSiteMapNode子ノードを非表示

Mvc.sitemap:

<mvcSiteMapNode title="DTLSA" url="#"> 
    <mvcSiteMapNode title="Application Status" controller="application" action="index" area="" /> 
    <mvcSiteMapNode title="Apply Now" controller="application" action="applynow" preservedRouteParameters="applicationId" area="" /> 
    <mvcSiteMapNode title="Personnel" controller="application" action="personnel" preservedRouteParameters="applicationId" area="" visibility="!*" /> 
    <mvcSiteMapNode title="Review" controller="application" action="review" area="" preservedRouteParameters="applicationId" visibility="!*" /> 
    <mvcSiteMapNode title="Checkout" controller="application" action="checkout" area="" preservedRouteParameters="applicationId" visibility="!*" /> 
    <mvcSiteMapNode title="Confirmation" controller="application" action="confirmation" preservedRouteParameters="applicationId" area="" visibility="!*" /> 
</mvcSiteMapNode> 

MenuHelperModel表示テンプレート:

@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel 
@using System.Web.Mvc.Html 
@using MvcSiteMapProvider.Web.Html.Models 

<ul class="nav navbar-nav navbar-right"> 
@foreach (var node in Model.Nodes) { 
    <li class="@(node.IsCurrentNode || node.Children.Any(n => n.IsCurrentNode) ? "active" : "") @(node.Children.Any() ? "dropdown" : "")">@Html.DisplayFor(m => node) 
     @if (node.Children.Any()) { 
      @Html.DisplayFor(m => node.Children) 
     } 
    </li> 
} 

答えて

1

ノードが現在の経路(そのかの一部であるかどうかを決定するためにnode.IsInCurrentPathプロパティを使用することができ目に見える子供がいるかどうか)。

@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel 
@using System.Web.Mvc.Html 
@using MvcSiteMapProvider.Web.Html.Models 

<ul class="nav navbar-nav navbar-right"> 
@foreach (var node in Model.Nodes) { 
    <li class="@(node.IsInCurrentPath && !node.IsRootNode ? "active" : "") @(node.Children.Any() ? "dropdown" : "")">@Html.DisplayFor(m => node) 
     @if (node.Children.Any()) { 
      @Html.DisplayFor(m => node.Children) 
     } 
    </li> 
} 
関連する問題