日安!在Umbraco上工作,并且很难在Umbraco中创建动态菜单。应该使用menuName调用li菜单。
它适用于第一个循环(称为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>
}
}
发布于 2016-02-25 11:47:21
当不使用强样式视图时,UmbracoTemplatePage
的UmbracoTemplatePage
属性是dynamic
,这意味着@item.menuItem
是可访问的。
但是,您的createSubmenu
助手将动态数据转换为一个没有成员menuName
可用的IPublishedContent
。您需要使用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>
}
}
https://stackoverflow.com/questions/35611017
复制相似问题