0

我正在爲我的網站使用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="&#x28;"> 
     <mvcSiteMapNode title="Create/Edit Sale Event" description="This is an example of a section description" controller="Bid" action="Manage" icon="&#x29;" /> 
     <mvcSiteMapNode title="Bidding Status Manager" description="This is an example of a section description" controller="Bid" action="Status" icon="&#x5d;" /> 
    </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 = "&#x55;"; 
} 

// 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問題,例如在調用站點地圖之前設置變量,然後在顯示模板中使用該變量。

任何建議,將不勝感激。

謝謝!

回答

0

我不知道我完全明白你想要什麼,但是你不能只在你的模板中加入另一個條件嗎?

@if (listClass == "disabled") { 
    <p class="description">&nbsp;</p> 
} else { 
    <p class="description">@Model.Description</p> 
}