2016-02-24 5 views
0

Добрый день! работает над Umbraco и пытается создать динамическое меню в Umbraco. Меню li должно вызываться с помощью menuName.Динамическое меню Umbraco 7

Он работает для первого цикла (статическое меню под названием item.menuName), но не работает во втором - node.menuName. node.Name работает, но .menuName нет. Зачем?

Спасибо!

var homePage = CurrentPage.AncestorsOrSelf(1).First(); 
    var menuItems = homePage.Children.Where("UmbracoNaviHide == false"); 

<ul class="menu"> 

    @foreach (var item in menuItems) 
    { 
     var childrenItems = item.Children.Where("UmbracoNaviHide == false"); 
     <li class="@(CurrentPage.Id == item.Id ? "sel" : null)"> 
      <a href="@item.Url"><h4>@item.menuName</h4></a> 
      @createSubmenu(childrenItems, item.Id) 
     </li> 
    } 
</ul> 

@helper createSubmenu(IEnumerable<IPublishedContent> nodes, int? parentId) { 
    if (nodes.Count() > 0){ 
     <ul> 
     @foreach (var node in nodes) 
     { 
      var childrenItems = node.Children.Where("UmbracoNaviHide == false"); 
      <li class="@(CurrentPage.Id == node.Id ? "sel" : null)"> 
       <a href="@node.Url"><h5>@node.menuName</h5></a> 
       @createSubmenu(childrenItems, node.Id) 
      </li> 
     } 
     </ul> 
    } 
} 

ответ

1

Когда вы не используете сильно стилизованных взгляды, то CurrentPage свойство UmbracoTemplatePage является dynamic означает, что @item.menuItem доступен.

Помощник помощника createSubmenu, тем не менее, передает динамику в номер IPublishedContent, который не имеет члена menuName. Вам необходимо будет использовать метод GetPropertyValue:

@helper createSubmenu(IEnumerable<IPublishedContent> nodes, int? parentId) 
{ 
    if (nodes.Count() > 0) 
    { 
     <ul> 
      @foreach (var node in nodes) 
      { 
       var childrenItems = node.Children.Where("UmbracoNaviHide == false"); 
       <li class="@(CurrentPage.Id == node.Id ? "sel" : null)"> 
        <a href="@node.Url"><h5>@node.GetPropertyValue("menuName")</h5></a> 
        @createSubmenu(childrenItems, node.Id) 
       </li> 
      } 
     </ul> 
    } 
} 
+0

Спасибо, работает –