我对使用Razor和一些自定义c#树数据结构以HTML正确渲染存在问题。
我已经找到了C#中树形数据结构的出色解决方案,但是当我需要使用对象(具有该自定义类型)呈现HTML时出现了问题,因为我还希望将其直接用作模型(asp.net mvc Web应用程序),我的页面。当用一些键将结果列表分组,然后将每个组呈现为HTML中的行时,并使用一些JavaScript看起来很酷,我成功地做到了,但是我想知道是否有人会知道如何遍历此自定义数据结构(在页面上使用Razor-C#进行页面建模,并以HTML呈现树。
public class TreeNode<T> : IEnumerable<TreeNode<T>>
{
public T Data { get; set; }
public TreeNode<T> Parent { get; set; }
public ICollection<TreeNode<T>> Children { get; set; }
public TreeNode(T data)
{
this.Data = data;
this.Children = new LinkedList<TreeNode<T>>();
}
public TreeNode<T> AddChild(T child)
{
TreeNode<T> childNode = new TreeNode<T>(child) { Parent = this };
this.Children.Add(childNode);
return childNode;
}
#region iterating
IEnumerator IEnumerable.GetEnumerator(){
return GetEnumerator();
}
public IEnumerator<TreeNode<T>> GetEnumerator(){
yield return this;
foreach (var directChild in this.Children){
foreach (var anyChild in directChild)
yield return anyChild;
}
}
#endregion
}
在检查对象时使用这种类型的对象,我发现它具有不错的树结构,因此我成功填充了树,但没有使用这种类型来渲染它。我很确定这只是foreach循环,条件有所变化(类似于递归),但我无法弄清楚。