Nuget 패키지 MvcSiteMapProvider를 사용하여 메뉴 구조를 만듭니다. "DTLSA"라는 탭이 있는데 사용자가 마우스를 올리면 "응용 프로그램 상태"와 "지금 적용"이 표시됩니다. 그래서 "Personnel"과 그 아래에서 모든 것이 구조에 숨겨집니다. 그러나 사용자가 "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>
}