我试图在布局(主题)中单独显示子空间链接。
我已经覆盖了仅显示“根”级导航链接的MenuItem.cshtml。但是现在我想弄清楚如何从Layout.cshtml中的Model访问Menu.Items。
我会将模型投射到哪个会暴露Menu.Items?
示例:产品1.0,支持2.0
查看产品页面时,您会看到 电子1.1 家具1.2 办公用品1.3
答案 0 :(得分:1)
我没有使用高级菜单。其中有一些错误阻止我使用它。
我找到的解决方案并不是最漂亮的代码,需要重构,但这里是: 我渲染一个PartialView强制转换Model.Navigation
我想要第二个(子菜单显示)的Layout.cshtml代码 @ {Html.RenderPartial(" SubNavMenu",(IEnumerable)Model.Navigation);}
PartialView中的代码
@model IEnumerable<dynamic>
@{
IEnumerable<dynamic> subNavLinks = null;
string requestUrl = Request.Path.Replace(Request.ApplicationPath, string.Empty).TrimEnd('/').ToUpperInvariant();
IEnumerable<dynamic> children = Model.FirstOrDefault(x => x.MenuName == "main").Items;
var menuItems = children.Select(x => x.Item);
var parent = menuItems.FirstOrDefault(x => x.Text.TextHint.Equals(requestUrl, StringComparison.InvariantCultureIgnoreCase));
if(parent!=null)
{
subNavLinks = menuItems.Where(x => x.Position.StartsWith(parent.Position.Substring(0,1)) && x.Position.Length>1);
}
}
<nav>
<ul class="subNav">
@if (subNavLinks != null)
{
foreach (var item in subNavLinks)
{
<li><a class="@className" href="@item.Href">@item.Text</a></li>
}
}
</ul>
</nav>
答案 1 :(得分:0)
我不知道你想要达到什么目的,但我建议你看看Advanced Menu module:它具有易于使用的分层菜单和菜单小部件,你可以在你的布局中包含显示独立的菜单或子菜单很容易。