2008-09-12 4 views
2

Я пытаюсь найти лучший способ визуализации некоторых иерархических данных во вложенный неупорядоченный список с помощью ASP.NET MVC. Есть ли у кого-нибудь советы о том, как это сделать?Иерархические данные в ASP.NET MVC

ответ

1

Я предлагаю плагины древовидного дерева для создания его, как дерево, но как для рендеринга, просто поместите его в рекурсивный помощник лямбда, чтобы сделать вложенность.

+0

jquery for treecontrol звучит как хорошая идея, спасибо за предложение. Не могли бы вы рассказать о том, как использовать рекурсивную лямбду для рендеринга. – 2008-09-12 12:23:34

1

Вы имеете в виду ... вы хотите какой-то древовидный вид?

Фактически вы можете заставить элемент управления treeview работать ... но вам нужно обернуть его в тег формы на стороне сервера. Вы получите обычную гадость, которая приносит (например, генерируемые идентификаторы и viewstate), но она будет работать с точки зрения рендеринга.

Если вы хотите просто создавать теги и вставлять их, это было бы довольно легко сделать с петлями foreach().

0

Для этого (рендеринг иерархического меню, древовидной структуры и т. Д.) Я использую рекурсивные вызовы пользовательского компонента (ascx или aspx в новом предварительном просмотре5).
Я предоставляю компоненту первый уровень элементов (список элементов), а компонент затем проверяет каждый элемент в списке, если есть какие-либо дочерние элементы, и вызывается со списком этих дочерних элементов.
Вы можете построить иерархический граф объектов в контроллере или только один размерный список с свойством ParentID.

1

Я считаю, что в настоящее время такого контроля нет ... TreeViews сложны по своей природе. Вы можете, конечно, «нарисовать» иерархию столько, сколько хотите, используя всевозможные повторители и циклы, но для достижения функциональности вида дерева, подобного тому, что находится в панели инструментов веб-форм ... вам нужно подождать!

1

Почему бы вам не передать свою модель в виде дерева на вид?

/// This is the model class 
public class MyTreeNode<T> 
{ 
    public ICollection<MyTreeNode> ChildNodes {get;} 
    public T MyValue { get; set; } 
    bool HasChildren { get { return ChildNodes.Any(); } } 
} 

///This is the html helper: 
public static string RenderTree<T>(this HtmlHelper html, MyTreeNode<T> root, Func<T, string> renderNode) 
{ 
    var sb = new StringBuilder(); 
    sb.Append(renderNode(root.MyValue)); 
    if (root.HasChildren) 
    { 
     foreach(var child in root.ChildNodes) 
     { 
      sb.Append(RenderTree<T>(html, child, renderNode)); 
     } 
    } 
    return sb.ToString(); 
} 

Я действительно не тестировал этот код, но речь идет об этой идее. Вы можете себе представить, как создать собственный рекурсивный html-помощник для рендеринга дерева.

+0

Ну что ж, вам нужно добавить некоторый usercontrol, который делает рендеринг, интегрируя с плагином jquery treeview для максимальных возможностей ... Еще нужно некоторое усовершенствование форматирования узлов ... например, если оно должно отображаться как ссылка ... спасибо – 2010-01-16 17:37:06

Смежные вопросы