我試圖在layout(主題)內單獨顯示subnav鏈接。Orchard分別顯示subnav鏈接
我已經重寫了只顯示'root'級導航鏈接的MenuItem.cshtml。但是現在我試圖弄清楚如何從Layout.cshtml中的Model中訪問Menu.Items。
我該如何將模型投射到會暴露Menu.Items?
例如:產品1.0,支持2.0
查看產品頁面時,你會看到 電子1.1 傢俱1.2 辦公用品1.3
我試圖在layout(主題)內單獨顯示subnav鏈接。Orchard分別顯示subnav鏈接
我已經重寫了只顯示'root'級導航鏈接的MenuItem.cshtml。但是現在我試圖弄清楚如何從Layout.cshtml中的Model中訪問Menu.Items。
我該如何將模型投射到會暴露Menu.Items?
例如:產品1.0,支持2.0
查看產品頁面時,你會看到 電子1.1 傢俱1.2 辦公用品1.3
我不知道你要實現什麼,但我建議您查看Advanced Menu module:它具有易於使用的分級菜單和菜單小部件,您可以在佈局中包含該菜單小部件以輕鬆顯示獨立的菜單或子菜單。
我對高級菜單沒有太大的好運。其中有一些錯誤使我無法使用它。
我的解決辦法,我發現是不是最漂亮的代碼,需要進行重構,但在這裏它是: 我渲染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>
'變種subNavLinks =的菜單項
代碼.Where(x => x.Position.StartsWith(parentPosition.Substring(0,1))&& x.Position.Length> 1);' – dave 2012-01-25 22:16:59