为了账号安全,请及时绑定邮箱和手机立即绑定

如何在“ MVC视图”页面中呈现单个链接列表

/ 猿问

如何在“ MVC视图”页面中呈现单个链接列表

呼如林 2019-10-22 22:19:22

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


类文件


 public class TreeViewFolder

 {

    public string FolderPath { get; set; }

    public string FolderName { get; set; }

    public List<TreeViewFolder> MyTreeList { get; set; }

 }

我需要在MVC视图中呈现以上列表。我不知道如何在MVC视图中呈现单个链接列表数据。任何帮助将不胜感激。


谢谢


查看完整描述

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


查看完整回答
反对 回复 2019-10-22
?
叮当猫咪

我不需要初始化和填充控制器中的数据并将其传递给方法,因为在Menu.cs类中都已处理了所有数据。如何传递返回MvcHtmlString的局部视图进行查看。作为您的指南,我创建了另一个采用字符串并将其返回为的方法MvcHtmlString。 

查看完整回答
反对 回复 2019-10-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信