2014-11-26 3 views
0

Как я пытаюсь создать структуру папок TreeView в MVC. У меня есть файл класса, похожий на ниже.Как визуализировать отдельно Связанный список в MVC View page

Класс File

public class TreeViewFolder 
{ 
    public string FolderPath { get; set; } 
    public string FolderName { get; set; } 
    public List<TreeViewFolder> MyTreeList { get; set; } 
} 

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

Благодаря

+0

Что вы хотите отобразить? Просто иерархия имен папок? –

ответ

2

Вы можете создать метод расширения, который использует рекурсию для построения <ul> и <li> элементов для отображения иерархии папок

public static class FolderTreeExtensions 
{ 
    public static MvcHtmlString FolderTree(this HtmlHelper helper, TreeViewFolder folder) 
    { 
    return MvcHtmlString.Create(TreeLeaf(folder)); 
    } 

    // Recursive function 
    private static string TreeLeaf(TreeViewFolder folder) 
    { 
    StringBuilder html = new StringBuilder(); 
    TagBuilder div = new TagBuilder("div"); 
    div.InnerHtml = folder.FolderName; 
    html.Append(div.ToString()); 
    if (folder.MyTreeList != null) 
    { 
     foreach (TreeViewFolder subFolder in folder.MyTreeList) 
     { 
     html.Append(TreeLeaf(subFolder)); 
     } 
    } 
    TagBuilder item = new TagBuilder("li"); 
    item.InnerHtml = html.ToString(); 
    TagBuilder container = new TagBuilder("ul"); 
    container.InnerHtml = item.ToString();  
    return container.ToString(); 
    } 
} 

Затем в контроллере, инициализировать и заполнить и экземпляр TreeViewFolder, и в поле зрения

@model TreeViewFolder 
.... 
@Html.FolderTree(Model) 

Затем введите элементы, соответствующие вашим требованиям

Примечание: либо добавить using заявление в представлении или добавить ссылку на <namespaces> секции web.config

+0

Мне не нужно инициализировать и заполнять данные в контроллере и передавать его методу, поскольку все это позаботится в классе Menu.cs. Как передать возвращенный 'MvcHtmlString' на частичный просмотр для его просмотра. В качестве вашего гида я создал другой метод, который принимает строку и возвращает ее как «MvcHtmlString». – ARr0w

+0

@ ARr0w, Ваш комментарий кажется связанным с вашим [другим вопросом] (http://stackoverflow.com/questions/43087175/mvc-dynamic-menu-populating-plain-text) и должен быть сделан там :) –

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