2014-11-26 2 views
0

MVC에서 TreeView 폴더 구조를 만들려고합니다. 클래스 파일은 아래와 같습니다.MVC보기 페이지에서 링크 된 목록을 단독으로 렌더링하는 방법

클래스 파일은

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

나는 MVC보기 목록 위에 그 렌더링 할 필요가있다. MVC보기에서 단일 연결된 목록 데이터를 렌더링하는 방법을 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.

감사

+0

무엇을 표시 할 않는의 <namespaces> 부분에 대한 참조를 추가 하나? 폴더 이름의 계층 구조입니까? –

답변

2

당신은, 폴더

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의 채우고 인스턴스에 <ul><li> 요소를 구축하기 위해 재귀를 사용하는 확장 메서드를 만들 수 있습니다 보기에서

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

요구 사항에 맞게 요소의 스타일을 지정하십시오.

참고 :보기에서 using 문을 추가하거나 web.config

+0

컨트롤러의 데이터를 초기화하고 채우고 Menu.cs 클래스에서 처리되므로 메서드에 전달할 필요가 없습니다. 부분 뷰에 반환 된'MvcHtmlString'을 어떻게 전달할 것인가? 귀하의 가이드로, 나는 문자열을 가져 와서 그것을'MvcHtmlString'으로 반환하는 또 다른 메서드를 만들었습니다. – ARr0w

+0

@ ARr0w, 귀하의 의견은 귀하의 [다른 질문] (http://stackoverflow.com/questions/43087175/mvc-dynamic-menu-populating-plain-text)와 관련이 있으며 거기에 제출해야합니다 :) –

관련 문제