如何使用asp.net mvc绑定导航
本文关键字:绑定 导航 mvc net 何使用 asp | 更新日期: 2023-09-27 18:11:48
我刚开始使用Umbraco 7,我创建了2个文档类型和3个页面,
我正在使用一个模板,我从入门工具包下载..
首先,为什么这个平台这么难理解?!?!我看过乌姆布拉科的所有片段。电视已经. .
第二个重要问题是:为什么导航栏没有显示所有的页面?看来我只有1页已经硬编码了。
模板的代码如下:
@inherits UmbracoTemplatePage
@{
// Model.Content is the current page that we're on AncestorsOrSelf is all of the ancestors this page has in the tree
// (1) means: go up to level 1 and stop looking for more ancestors when you get there First() gets the first ancestor found (the home page, on level 1)
var homePage = CurrentPage.AncestorsOrSelf(1).First();
var menuItems = homePage.Children.Where("UmbracoNaviHide == false");
}
<!-- Nav -->
<ul class="menu">
@* If the Url of the current page is "/" then we want to add the class "current_page_item" *@
@* Otherwise, we set the class to null, that way it will not even be added to the <li> element *@
<li class="@(CurrentPage.Url == "/" ? "sel" : null)">
<a href="/homepage">Home</a>
</li>
@foreach (var item in menuItems)
{
var childrenItems = item.Children.Where("UmbracoNaviHide == false");
<li class="@(CurrentPage.Id == item.Id ? "sel" : null)">
<a href="@item.Url">@item.Name</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">@node.Name</a>
@createSubmenu(childrenItems, node.Id)
</li>
}
</ul>
}
}
<!-- /Nav -->
- Umbraco是如此困难(它不是),因为它是一个平台,当开发者使用它时,它会获得所有的荣耀。我的意思是,许多人希望产品是一个"开箱即用"的网站,你可以安装一个主题,然后编辑内容。这是Wordpress。乌姆布拉科不是那样的。它有一些入门套件,我不觉得它们有多大帮助。当我建立一个Umbraco网站时,我总是从一个空白的石板开始。
-
现在你正试图从我看到的打印你的导航菜单。以下是我建议使用的代码。另外,你需要考虑使用一个主模板,它将包含你的导航。
<ul> @{ var homeNode = Model.Content.AncestorOrSelf("[HomeNodeDocumentType]"); } @foreach (var node in homeNode.Children.Where(x => x.IsVisible)) { <li> <a href="@node.Url">@node.AsDynamic().yourFieldForTheTitle</a> </li> } </ul>
要点:
- 之前的代码是用于多级菜单的,如果需要,您可以重写我提供的代码。我发现没有多少人需要这个。
- 注意"yourFieldForTheTitle",这是一个自定义文本字符串,你必须添加到你的文档类型,不要使用名称,它会给你带来麻烦。
- 注意"[homendedocumenttype]"文档类型。当遍历树时,使用它们快速导航到所需的节点。
- 最后,用Visual Studio设置你的Umbraco站点,智能感知将帮助你开始。
就是这样!Umbraco是如此的好,坚持下去,它会值得你的时间!