Проблема с отображением пользовательской структуры дерева C # в HTML с помощью Razor - PullRequest
0 голосов
/ 22 мая 2019

У меня проблема с правильным рендерингом в HTML с использованием Razor, некоторой пользовательской структуры данных дерева c #.

Я уже нашел отличное решение для древовидной структуры данных в c #, но проблема возникает, когда мне нужно визуализировать HTMLиспользуя объект (с этим пользовательским типом), потому что я также хочу использовать его непосредственно в качестве модели (веб-приложение asp.net mvc) на моей странице.Я сделал это успешно, сгруппировав список результатов с некоторым ключом и затем отобразив каждую группу как строку в 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 с некоторым изменяющимся условием (схожим с рекурсией), но я не могу понять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...