【问题标题】:MVC Sitemap - conditionally display descriptionMVC Sitemap - 有条件地显示描述
【发布时间】:2013-06-26 08:49:59
【问题描述】:

我正在为我的网站使用 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

@使用 System.Web.Mvc.Html @使用 MvcSiteMapProvider.Web.Html.Models

@{ // 默认值 字符串 itemIcon = "1"; string listClass = "菜单项";

// 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。我想要做的是有条件地包含描述属性,例如只呈现描述。

目前,为所有菜单呈现描述,然后用 CSS 隐藏那些我不想要的描述,这显然是一个肮脏的修复。

这很可能是一个更广泛的 MVC 问题,例如在调用站点地图之前设置一个变量,然后在显示模板中使用该变量。

任何建议将不胜感激。

谢谢!

【问题讨论】:

    标签: asp.net-mvc model-view-controller asp.net-mvc-4 mvcsitemapprovider asp.net-mvc-sitemap


    【解决方案1】:

    我不确定我是否完全理解您想要什么,但您不能在模板中添加另一个条件吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      相关资源
      最近更新 更多