Я использую пакет nuget MvcSiteMapProvider для создания моей структуры меню. У меня есть вкладка под названием «DTLSA», и когда пользователи находят, что я хочу видеть только «Статус приложения» и «Применить сейчас». Поэтому из «Персонала» и ниже все будет скрыто в структуре. Однако, если пользователь находится на «Персонале» или на любой другой странице, я хочу, чтобы «DTLSA» применил к нему класс css «active» (это единственная причина, по которой я их здесь). Если я устанавливаю 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>
}