Asp.net mvc 如何在MVC视图页面中呈现单链表

Asp.net mvc 如何在MVC视图页面中呈现单链表,asp.net-mvc,treeview,Asp.net Mvc,Treeview,当我试图在MVC中创建TreeView文件夹结构时。我有下面这样的类文件 类文件 public class TreeViewFolder { public string FolderPath { get; set; } public string FolderName { get; set; } public List<TreeViewFolder> MyTreeList { get; set; } } 公共类树视图文件夹 { 公共字符串FolderP

当我试图在MVC中创建TreeView文件夹结构时。我有下面这样的类文件

类文件

 public class TreeViewFolder
 {
    public string FolderPath { get; set; }
    public string FolderName { get; set; }
    public List<TreeViewFolder> MyTreeList { get; set; }
 }
公共类树视图文件夹
{
公共字符串FolderPath{get;set;}
公共字符串FolderName{get;set;}
公共列表MyTreeList{get;set;}
}
我需要在MVC视图中呈现上面的列表。我不知道如何在MVC视图中呈现单链表数据。任何帮助都将不胜感激


多亏了您可以创建一个扩展方法,该方法使用递归来构建
  • 元素来显示文件夹的层次结构

    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)
    
    然后根据您的需求设计元素的样式


    注意:在视图中使用
    语句添加
    ,或者添加对
    web.config

    部分的引用,您可以创建一个扩展方法,该方法使用递归来构建
    • 元素来显示文件夹的层次结构

      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)
      
      然后根据您的需求设计元素的样式


      注意:在视图中使用
      语句添加
      ,或者添加对
      web.config

      部分的引用,您可以创建一个扩展方法,该方法使用递归来构建
      • 元素来显示文件夹的层次结构

        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)
        
        然后根据您的需求设计元素的样式


        注意:在视图中使用
        语句添加
        ,或者添加对
        web.config

        部分的引用,您可以创建一个扩展方法,该方法使用递归来构建
        • 元素来显示文件夹的层次结构

          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)
          
          然后根据您的需求设计元素的样式


          注意:在视图中使用
          语句添加
          ,或添加对
          web.config

          部分的引用,以显示什么?只是文件夹名称的层次结构?要显示什么?只是文件夹名称的层次结构?要显示什么?只是文件夹名称的层次结构?要显示什么?仅仅是文件夹名称的层次结构?我不需要在控制器中初始化和填充数据,并将其传递给方法,因为它在Menu.cs类中得到处理。如何在局部视图上传递返回的
          MvcHtmlString
          ,以查看它。在您的指导下,我创建了另一个方法,该方法接受字符串并将其返回为
          MvcHtmlString
          @ARr0w,您的注释似乎与您的相关,应该在那里进行:)我不需要在控制器中初始化和填充数据,也不需要将其传递给方法,因为它在Menu.cs类中得到了处理。如何在局部视图上传递返回的
          MvcHtmlString
          ,以查看它。在您的指导下,我创建了另一个方法,该方法接受字符串并将其返回为
          MvcHtmlString
          @ARr0w,您的注释似乎与您的相关,应该在那里进行:)我不需要在控制器中初始化和填充数据,也不需要将其传递给方法,因为它在Menu.cs类中得到了处理。如何在局部视图上传递返回的
          MvcHtmlString
          ,以查看它。在您的指导下,我创建了另一个方法,该方法接受字符串并将其返回为
          MvcHtmlString
          @ARr0w,您的注释似乎与您的相关,应该在那里进行:)我不需要在控制器中初始化和填充数据,也不需要将其传递给方法,因为它在Menu.cs类中得到了处理。如何在局部视图上传递返回的
          MvcHtmlString
          ,以查看它。在您的指导下,我创建了另一个方法,该方法接受字符串并将其返回为
          MvcHtmlString
          @ARr0w,您的评论似乎与您的相关,应该在那里发表:)