zoukankan      html  css  js  c++  java
  • asp.net mvc+EF 递归生成树结构返回json

    0、数据表结构,主要属性有:Id、parentId(父节Id)、Text、Url……等等。

    1、新建一个树结构MenuModels

     1    public class MenuModels
     2     {
     3         private int _id;
     4         private string _text;
     5         private int? _parentid;
     6         private string _icon;
     7         private string _url;
     8         private object _menus;
     9         private Dictionary<string, string> _attributes = new Dictionary<string, string>();
    10 
    11         public int id
    12         {
    13             get { return _id; }
    14             set { _id = value; }
    15         }
    16         public int? parentid
    17         {
    18             get { return _parentid; }
    19             set { _parentid = value; }
    20         }
    21         public string text
    22         {
    23             get { return _text; }
    24             set { _text = value; }
    25         }
    26         public string icon
    27         {
    28             get { return _icon; }
    29             set { _icon = value; }
    30         }
    31         public string url
    32         {
    33             get { return _url; }
    34             set { _url = value; }
    35         }
    36         public Dictionary<string, string> attributes
    37         {
    38             get { return _attributes; }
    39             set { _attributes = value; }
    40         }
    41         public object menus
    42         {
    43             get { return _menus; }
    44             set { _menus = value; }
    45         }
    46     }
    View Code

    2、在控制器中新建如下方法:

    1 /// <summary>
    2         /// 加载树
    3         /// </summary>
    4         /// <returns></returns>
    5         public JsonResult LoadTree()
    6         {
    7             List<MenuModels> list = InitTree();
    8             return Json(list, "text/html", JsonRequestBehavior.AllowGet);
    9         }
    View Code
     1  /// <summary>
     2         /// 初始化树 默认找出顶级菜单
     3         /// </summary>
     4         /// <returns></returns>
     5         public List<MenuModels> InitTree()
     6         {
     7             var TreeList = _db.Cent_Tree.ToList();
     8             List<MenuModels> rootNode = new List<MenuModels>();
     9             foreach (var plist in TreeList.Where(t => t.ParentID == null))
    10             {
    11                 MenuModels jt = new MenuModels();
    12                 jt.id = plist.ID;
    13                 jt.text = plist.Name;
    14                 jt.parentid = plist.ParentID;
    15                 jt.icon = "";
    16                 jt.url = plist.SystemUrl;
    17                 jt.attributes = CreateUrl(TreeList, jt);
    18                 jt.menus = CreateChildTree(TreeList, jt);
    19                 rootNode.Add(jt);
    20             }
    21             return rootNode;
    22         }
    23         /// <summary>
    24         /// 递归生成子树
    25         /// </summary>
    26         /// <param name="TreeList"></param>
    27         /// <param name="jt"></param>
    28         /// <returns></returns>
    29         private List<MenuModels> CreateChildTree(List<Cent_Tree> TreeList, MenuModels jt)
    30         {
    31             int keyid = jt.id;//根节点ID
    32             List<MenuModels> nodeList = new List<MenuModels>();
    33             var children = TreeList.Where(t => t.ParentID == keyid);
    34             foreach (var chl in children)
    35             {
    36                 MenuModels node = new MenuModels();
    37                 node.id = chl.ID;
    38                 node.text = chl.Name;
    39                 node.parentid = chl.ParentID;
    40                 node.icon = "";
    41                 node.url = chl.SystemUrl;
    42                 node.attributes = CreateUrl(TreeList, node);
    43                 node.menus = CreateChildTree(TreeList, node);
    44                 nodeList.Add(node);
    45             }
    46             return nodeList;
    47         }
    48         /// <summary>
    49         /// 把Url属性添加到attribute中,如果需要别的属性,也可以在这里添加
    50         /// </summary>
    51         /// <param name="TreeList"></param>
    52         /// <param name="jt"></param>
    53         /// <returns></returns>
    54         private Dictionary<string, string> CreateUrl(List<Cent_Tree> TreeList, MenuModels jt)
    55         {
    56             Dictionary<string, string> dic = new Dictionary<string, string>();
    57             int keyid = jt.id;
    58             var urlList = TreeList.Where(t => t.ID == keyid).SingleOrDefault();
    59             string Sysurl = urlList.SystemUrl;
    60             string Indexurl = urlList.IndexUrl;
    61             dic.Add("sysurl", Sysurl);
    62             dic.Add("indurl", Indexurl);
    63             dic.Add("close", "true");
    64             return dic;
    65         }
    View Code

    3、运行,http://localhost/Home/loadtree

  • 相关阅读:
    char*,const char*和string 互转
    创建txt文件,并且写入内容
    monit 命令详解(monit)
    monit 配置详解(monitrc)
    nginx 配置详解(./configure)
    nginx 配置详解(nginx.conf)
    获取并检查系统负载CPU内存磁盘网络
    构建Zookeeper集群(zkcluster) ~一篇文章玩转zk集群^.^
    安装Zookeeper到Linux
    使用kubeadm搭建Kubernetes(K8S)集群
  • 原文地址:https://www.cnblogs.com/baidu-com/p/5118902.html
Copyright © 2011-2022 走看看