2012-01-18 38 views
0

我試圖在layout(主題)內單獨顯示subnav鏈接。Orchard分別顯示subnav鏈接

我已經重寫了只顯示'root'級導航鏈接的MenuItem.cshtml。但是現在我試圖弄清楚如何從Layout.cshtml中的Model中訪問Menu.Items。

我該如何將模型投射到會暴露Menu.Items?

例如:產品1.0,支持2.0

查看產品頁面時,你會看到 電子1.1 傢俱1.2 辦公用品1.3

回答

0

我不知道你要實現什麼,但我建議您查看Advanced Menu module:它具有易於使用的分級菜單和菜單小部件,您可以在佈局中包含該菜單小部件以輕鬆顯示獨立的菜單或子菜單。

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> 
+0

'變種subNavLinks =的菜單項

代碼.Where(x => x.Position.StartsWith(parentPosition.Substring(0,1))&& x.Position.Length> 1);' – dave 2012-01-25 22:16:59