我正在为Umbraco工作并努力在Umbraco中创建动态菜单。
应使用menuTitle调用菜单。
我目前的代码是部分视图。
<nav>
<ul>
<li>
<a href="#">Home</a>
<li>
@foreach (var m in Model.Menu)
{
<li>
<a href="@m.Url">@m.menuTitle</a>
</li>
}
</ul>
</nav>
<div class="clear"></div>
答案 0 :(得分:0)
如果Menu是一个nodelist(比如MultiNodeTreePicker数据类型),你可以使用这样的东西:
var nodecommalist = CurrentPage.Menu.ToString().Split(',');
@foreach (var m in nodecommalist)
{
var mitem = Umbraco.Content(m);
<li>
<a href="@mitem.Url">@mitem.menuTitle</a>
</li>
}
或者你可以使用这样的东西来显示1级节点的所有孩子:
foreach (var m in CurrentPage.AncestorOrSelf(1).Children.Where("hideInNavigation==False"))
{
<li>
<a href="@m.Url">@m.menuTitle</a>
</li>
}
此示例还使用hideInNavigation,它是True / false数据类型。
答案 1 :(得分:0)
我认为以下会做到这一点。
@{
@* Get the root of the website *@
var root = CurrentPage.AncestorOrSelf(1);
}
<ul>
@foreach (var page in root.Children.Where("Visible"))
{
<li class="@(page.IsAncestorOrSelf(CurrentPage) ? "current" : null)">
<a href="@page.Url">@page.Name</a>
</li>
}
</ul>
答案 2 :(得分:0)
在渲染网站导航时,每次加载页面时都不会在网站上运行查询。一个好主意是做一次查询以生成动态菜单作为模型,然后将该模型存储在缓存中。这样,当页面加载时,它只是从内存中获取模型并减少网站上的负载。
我写了这篇博文,它为您提供了能够完成上述说法的代码。
http://www.codeshare.co.uk/blog/umbraco-site-navigation-menu-model-example-in-c-mvc/