Asp.net 递归树菜单结构
我想我需要一些帮助,在这里使用Razor viewengine在Umbraco中渲染af递归树菜单结构 我需要呈现以下树菜单结构:Asp.net 递归树菜单结构,asp.net,razor,recursion,umbraco,Asp.net,Razor,Recursion,Umbraco,我想我需要一些帮助,在这里使用Razor viewengine在Umbraco中渲染af递归树菜单结构 我需要呈现以下树菜单结构: Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 因此,当我在Page 5上时,我需要在父节点上使用CSS类“open”:Page 4、Page 2和Page 1,在我所站的节点上使用CSS类“active” 我已经获得了在
Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
因此,当我在Page 5
上时,我需要在父节点上使用CSS类“open”
:Page 4
、Page 2
和Page 1
,在我所站的节点上使用CSS类“active”
我已经获得了在单击菜单中的链接时渲染正确节点的结构,但我无法确定如何应用正确的类:-(
我的代码如下:
@{
DynamicNode current = Model;
var nodes = Model.AncestorOrSelf(2).Children.Where("Visible");
if(nodes.Any())
{
<ul class="side-nav-list">
@foreach(var node in nodes)
{
bool isDescendantOrSelf = current.IsDescendantOrSelf(node);
<li>
<a href="@node.Url">@node.Name</a>
@if(isDescendantOrSelf)
{
@RenderSubMenuRecursive(node)
}
</li>
}
</ul>
}
}
@helper RenderSubMenuRecursive(DynamicNode node)
{
if(node.Children.Any(x => x.GetPropertyValue("umbracoNaviHide").Equals("0") && Model.IsDescendantOrSelf(node)))
{
var childNodes = node.Children.Where(x => x.GetPropertyValue("umbracoNaviHide").Equals("0"));
string css = node.IsAncestor(Model) ? "open" : "";
<ul>
@foreach(var childNode in childNodes)
{
<li class="@css">
<a href="@childNode.Url">@childNode.Name</a>
@if (childNode.IsDescendantOrSelf(node))
{
@RenderSubMenuRecursive(childNode)
}
</li>
}
</ul>
}
}
@{
动态电极电流=模型;
var nodes=Model.AncestorOrSelf(2).Children.Where(“可见”);
if(nodes.Any())
{
@foreach(节点中的var节点)
{
bool isDescendantOrSelf=当前。isDescendantOrSelf(节点);
-
@如果(IsDescendatorSelf)
{
@RenderSubMenuRecursive(节点)
}
}
}
}
@辅助渲染子菜单草书(DynamicNode节点)
{
if(node.Children.Any(x=>x.GetPropertyValue(“umbracanaviHide”).Equals(“0”)和&Model.isDescendatorSelf(node)))
{
var childNodes=node.Children.Where(x=>x.GetPropertyValue(“umbracanaviHide”).Equals(“0”);
字符串css=node.IsAncestor(Model)?“打开”:“”;
@foreach(childNodes中的var childNode)
{
-
@if(childNode.isDescendatorSelf(节点))
{
@RenderSubMenuRecursive(子节点)
}
}
}
}
在此方面的任何帮助/提示都将不胜感激!:-)提前感谢 通过移动一些代码等自行解决。最终解决方案:
@{
DynamicNode current = Model;
var nodes = Model.AncestorOrSelf(2).Children.Where("Visible");
if(nodes.Any())
{
<ul class="side-nav-list">
@foreach(var node in nodes)
{
@RenderSubMenuRecursive(node)
}
</ul>
}
}
@helper RenderSubMenuRecursive(DynamicNode node)
{
var childNodes = node.Children.Where(x => x.GetPropertyValue("umbracoNaviHide").Equals("0"));
string css = node.IsAncestor(Model) ? "open" : "";
if(node.Id == Model.Id)
{
css = "active";
}
<li class="@css">
<a href="@node.Url">@node.Name</a>
<ul>
@foreach (var childNode in childNodes.Where(childNode => Model.IsDescendantOrSelf(node)))
{
@RenderSubMenuRecursive(childNode)
}
</ul>
</li>
}
@{
动态电极电流=模型;
var nodes=Model.AncestorOrSelf(2).Children.Where(“可见”);
if(nodes.Any())
{
@foreach(节点中的var节点)
{
@RenderSubMenuRecursive(节点)
}
}
}
@辅助渲染子菜单草书(DynamicNode节点)
{
var childNodes=node.Children.Where(x=>x.GetPropertyValue(“umbracanaviHide”).Equals(“0”);
字符串css=node.IsAncestor(Model)?“打开”:“”;
if(node.Id==Model.Id)
{
css=“活动”;
}
@foreach(childNodes.Where(childNode=>Model.isDescendatorSelf(node))中的var childNode)
{
@RenderSubMenuRecursive(子节点)
}
}
大家好,我正试图将此应用于我目前正在做的一个项目,但它出错了。我想我遗漏了一些@using-NAMSPACE的东西,你能把这个页面的完整代码发出来吗?