我正在爲我的網站使用MVC站點地圖提供程序,並且一次在頁面上顯示導航的三個版本。MVC站點地圖 - 有條件地顯示說明
首先,頂層:
@Html.MvcSiteMap("MvcSiteMapProvider").Menu(0, true, false, 1)
子段,查看頂層頁時被重複使用:
@Html.MvcSiteMap("MvcSiteMapProvider").Menu(2, 1, true)
以下是在一個2級部分我網站地圖:
<mvcSiteMapNode title="Bid Manager" description="This is an example of a section description" controller="Bid" action="Index" icon="(">
<mvcSiteMapNode title="Create/Edit Sale Event" description="This is an example of a section description" controller="Bid" action="Manage" icon=")" />
<mvcSiteMapNode title="Bidding Status Manager" description="This is an example of a section description" controller="Bid" action="Status" icon="]" />
</mvcSiteMapNode>
...這裏是顯示模板
@model MvcSiteMapProvider.Web.Html.Models.SiteMapNodeModel
@using System.Web.Mvc.Html @using MvcSiteMapProvider.Web.Html.Models
@ {// 默認 串itemIcon = 「1」; string listClass =「menu-item」;
// Pick up options in custom parameters
if (Model.MetaAttributes.ContainsKey("icon")) {
itemIcon = Model.MetaAttributes["icon"].ToString();
}
if (Model.MetaAttributes.ContainsKey("disabled") && (Model.MetaAttributes["disabled"].ToString() == "true")) {
listClass = "disabled";
itemIcon = "U";
}
// Check if this node is active
listClass = (Model.IsCurrentNode || Model.IsInCurrentPath) ? "active" : listClass;
// Show stuff
<li class="@listClass">
<div class="menu-icon" aria-hidden="true" data-icon="@Html.Raw(itemIcon)"></div>
<p>
@if (listClass == "disabled") {
<span>@Model.Title</span>
}
else {
<a href="@Model.Url">@Model.Title</a>
}
</p>
<p class="description">@Model.Description</p>
</li>
}
我有它使得顯示模板是用於經由CSS所有化妝品差異子級導航的每個實例是相同的。我想要做的是有條件地包括description屬性,例如只呈現描述。
目前,描述是爲所有菜單渲染的,然後用CSS隱藏那些我不需要的,這顯然是一個骯髒的修復。
這可能是一個更廣泛的MVC問題,例如在調用站點地圖之前設置變量,然後在顯示模板中使用該變量。
任何建議,將不勝感激。
謝謝!