【问题标题】:Dynamic Menu Navigation In Umbraco Using .Net User Control使用 .Net 用户控件在 Umbraco 中进行动态菜单导航
【发布时间】:2014-07-16 12:07:15
【问题描述】:
我是 .Net 开发人员,正在寻找与使用 .Net 用户控件在 umbraco 7 中创建动态导航菜单相关的示例,而无需使用 MVC 技术和 XSLT。我在谷歌上搜索过它,但没有得到太多回应,我得到的例子是使用 XSLT 或 Razor。我在 MVC 和 XSLT 方面没有任何经验,并且在寻找与使用经典 ASP.Net 相关的技术,即不使用 XSLT 和 MVC。如果有人可以提供一些有用的视频或链接以及我可以参考的示例,这将是一个很大的帮助。
谢谢
塔伦吉特·辛格
【问题讨论】:
标签:
menu
navigation
umbraco
【解决方案1】:
你应该真的研究一下 Razor 的事情。太简单了不试试!
它看起来像 c# 混合了一些 HTML。如果您真的想坚持使用 .Net UserControls,您可能会错过未来的版本。
在用户控件中创建导航非常困难,因为您有 2 个选项
- 你需要自己写出 HTML
- 为某些第 3 方控件创建一些自定义模型
这两个选项都不会返回您想要的 exact html。另一方面,Razor(和 xslt)会。
如果您仍然想在 .Net 用户控件中尝试一些东西,请获取您想要的 Umbraco 节点的实例。举个例子吧:
using System;
using System.Linq;
using Umbraco.Web;
public partial class UserControls_TestUserControl : UmbracoUserControl
{
protected void Page_Load(object sender, EventArgs e)
{
var cache = this.UmbracoContext.ContentCache;
var rootNodes = cache.GetAtRoot().First().Children;
foreach (var node in rootNodes)
{
Response.Write("<li>" + node.Name + "</li>");
}
}
}
如果你想调用这段代码,别忘了添加一个宏,然后在你的模板中插入宏。
以防万一您想探索剃须刀,这里有一个等价物:
@inherits UmbracoTemplatePage
@{
var homePage = CurrentPage.AncestorOrSelf(1);
var menuItems = homePage.Children;
}
<nav>
<ul>
<li><a href="/">Home</a></li>
@foreach (var item in menuItems)
{
<li><a href="@item.Url">@item.Name</a></li>
}
</ul>
</nav>
这个例子可以用作局部视图。并且可以使用:@Html.Partial("NameOfThePartial")
放入您的 (Razor) 模板中
你不得不承认,这并不难。