У меня проблема с правильным рендерингом в 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 с некоторым изменяющимся условием (схожим с рекурсией), но я не могу понять это.