我正在为我的网站使用MVC Sitemap提供程序,并且我一次在我的页面上最多显示三个版本的导航。
首先,顶级:
@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
@ { //默认值 string 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实现所有外观差异。我想要做的是有条件地包括描述属性,例如只呈现描述。
目前,为所有菜单呈现描述,然后使用CSS隐藏我不想要的那些,这显然是一个肮脏的修复。
这可能是更广泛的MVC问题,例如在调用站点地图之前设置变量,然后在显示模板中使用该变量。
任何建议都将不胜感激。
谢谢!
答案 0 :(得分:0)
我不确定我完全明白你想要什么,但是你不能在模板中加入另一个条件吗?
@if (listClass == "disabled") {
<p class="description"> </p>
} else {
<p class="description">@Model.Description</p>
}