使用Razor在HTML中呈现自定义c#树结构的问题

时间:2019-05-22 12:29:13

标签: c# html razor

我对使用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循环,条件有所变化(类似于递归),但我无法弄清楚。

0 个答案:

没有答案