框架是使用EF6.0.可以针对返回的值使用Newtonsoft.Json.dll(百度搜一下)来对返回的值序列化为json字符串,如果对以下值那就是使用JsonConvert.SerializeObject(functionTree),啥都不说,上实例代码

/// <summary>
/// init tree
/// </summary> /// <returns></returns>
public List<FunctionInfoMapping> LoadTree()
{
List<FunctionInfoMapping> listTree = InitTree();
return listTree;
//return JsonConvert.SerializeObject(list);
}
/// <summary>
/// init tree find top menu
/// </summary>
/// <returns></returns>
private List<FunctionInfoMapping> InitTree()
{
RightsContext rightContext = new RightsContext();
var treeList = (from a in db.FunctionInfoes
join b in db.FunctionInfoes
on a.ParentId equals b.FunctionId
select new FunctionInfoMapping
{
ID=a.FunctionId,
Title=a.FunctionName,
FunctionType=a.FunctionType,
ParentId=b.FunctionId,
ParentName=b.FunctionName,
FunctionPath=a.FunctionPath,
Description=a.Description,
SortId=a.SortId,
}).Union
(from a in db.FunctionInfoes
where a.ParentId == -
select new FunctionInfoMapping
{
ID = a.FunctionId,
Title = a.FunctionName,
FunctionType = a.FunctionType,
ParentId = -,
ParentName = "",
FunctionPath = a.FunctionPath,
Description = a.Description,
SortId = a.SortId,
});
var newTree = treeList.Union(treeList);
//List<FunctionInfoMapping> reeList= treeList.ToList<FunctionInfoMapping>()
List < FunctionInfoMapping > rootNode = new List<FunctionInfoMapping>();
foreach (var plist in newTree.Where(t => t.ParentId == -))
{
FunctionInfoMapping node = new FunctionInfoMapping();
node.ID = plist.ID;
node.Title = plist.Title;
node.FunctionType = plist.FunctionType;
node.ParentId = plist.ParentId;
node.ParentName = plist.ParentName;
node.FunctionPath = plist.FunctionPath;
node.Description = plist.Description;
node.SortId =plist.SortId;
node.Nodes = CreateChildTree(newTree.AsQueryable<FunctionInfoMapping>(), node);
rootNode.Add(node);
}
return rootNode;
}
/// <summary>
/// recursive
/// </summary>
/// <param name="TreeList"></param>
/// <param name="jt"></param>
/// <returns></returns>
private List<FunctionInfoMapping> CreateChildTree(IQueryable<FunctionInfoMapping> TreeList, FunctionInfoMapping parentId)
{
int keyid = parentId.ID;//root id
List<FunctionInfoMapping> nodeList = new List<FunctionInfoMapping>();
var children = TreeList.Where(t => t.ParentId == keyid);
foreach (var chl in children)
{
FunctionInfoMapping node = new FunctionInfoMapping();
node.ID = chl.ID;
node.Title = chl.Title;
node.FunctionType = chl.FunctionType;
node.ParentId = chl.ParentId;
node.ParentName = chl.ParentName;
node.FunctionPath = chl.FunctionPath;
node.Description = chl.Description;
node.SortId = chl.SortId;
node.Nodes = CreateChildTree(TreeList, node);
nodeList.Add(node);
}
return nodeList;
}

返回的结构如下

[
{
"id": 2,
"title": "Fundamental",
"functiontype": 1,
"parentId": -1,
"parentname": "",
"functionpath": "/Html/Fundamental",
"description": "fundamental menu link",
"sortid": 0,
"nodes": []
},
{
"id": 3,
"title": "Auth Manager",
"functiontype": 1,
"parentId": -1,
"parentname": "",
"functionpath": "/Html/Auth",
"description": " auth manager link ",
"sortid": 0,
"nodes": [
{
"id": 4,
"title": "Role Manager",
"functiontype": 2,
"parentId": 3,
"parentname": "Auth Manager",
"functionpath": "/Html/Auth/roles.html",
"description": " roles manager page ",
"sortid": 0,
"nodes": [
{
"id": 10,
"title": "Add Role",
"functiontype": 3,
"parentId": 4,
"parentname": "Role Manager",
"functionpath": null,
"description": null,
"sortid": 0,
"nodes": []
},
{
"id": 12,
"title": "Delete role",
"functiontype": 3,
"parentId": 4,
"parentname": "Role Manager",
"functionpath": null,
"description": null,
"sortid": 0,
"nodes": []
}
]
},
{
"id": 5,
"title": "Page Manager",
"functiontype": 2,
"parentId": 3,
"parentname": "Auth Manager",
"functionpath": "/Html/Auth/pages.html",
"description": "pages permission manager page",
"sortid": 0,
"nodes": []
}
]
}
]

生成树形结构的json字符串代码(c#)供前端angular tree使用.的更多相关文章

  1. Delphi中根据分类数据生成树形结构的最优方法

    一. 引言:    TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能 ...

  2. C#生成树形结构泛型类

    C#生成树形结构泛型类,使用方法: ToTree<ShowMessageUpdatesTableTreeViewModel>.ToDo(models) public class ToTre ...

  3. 树形菜单的json字符串的拼接

    最近在学习权限管理, 要用到树形按钮, 但是字符串的拼接是一个难理解的问题, 然后从网上找了一个从前台用js来遍历组成这个json字符串, 很好! 但是没看懂... var data = [ {&qu ...

  4. EasyUI_tree根据数据库数据生成树形结构JSON格式

    @Entitypublic class PubComp { @Id private String aguid; // 菜单ID private String pguid; // 父菜单 private ...

  5. EasyUI使用tree方法生成树形结构加载两次的问题

    html代码中利用class声明了easyui-tree,导致easyUI解析class代码的时候先解析class声明中的easyui-tree这样组件就请求了一次url:然后又调用js初始化代码请求 ...

  6. servlet+ajax+json字符串后台传入,前端解析并把数据循环填入表格实例

    写在前面:1.源代码来源于博客http://blog.sina.com.cn/u/2904067371 ,在此基础上对于前端代码稍作更改,把传过来的数据解析并传入表格2.json解析,用eval()3 ...

  7. 树形结构JSON的实现方法

    在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项.目前市场上常见的JavaScript框架及组件库中均包含自己的树 ...

  8. java中实现无限层级的树形结构

    本文展示了两个实现方法的代码.两个代码的实现方法不同,代码2更为简单. 先看一下最后实现的结果: 最后结果-json 代码1: 实现过程: 1.传入一段json字符串 2.将字符串转换成对象存入节点列 ...

  9. GridView 树形结构分组的功能

    在“会飞的鱼”博客中看到GridView实现树形结构的代码,经过修改,添加了树形结构中的复选框功能,欢迎吐槽. 源地址:http://www.cnblogs.com/chhuic/archive/20 ...

随机推荐

  1. Unity3D游戏开发初探—4.开发一个“疯狂击箱子”游戏

    一.预备知识—对象的”生“与”死“ (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive() 以上一篇的博文中的“指 ...

  2. 在C#代码中应用Log4Net(一)简单使用Log4Net

    首先让我们先把Log4Net跑起来,示例代码在文章最后面可以下载 1.先把Log4Net引入到工程中,为了演示方便,我们先建立一个winform程序.在程序的根目录下面,建立一个Libs文件夹,以便存 ...

  3. ASP.NET MVC 过滤器(三)

    ASP.NET MVC 过滤器(三) 前言 本篇讲解行为过滤器的执行过程,过滤器实现.使用方式有AOP的意思,可以通过学习了解过滤器在框架中的执行过程从而获得一些AOP方面的知识(在顺序执行的过程中, ...

  4. C/C++ makefile自动生成工具(comake2,autotools,linux),希望能为开源做点微薄的贡献!

      序     在linux下C或C++项目开发,Makefile是必备的力气,但是发现手写很麻烦. 在百度有个comake2工具,用于自动生成Makefile工具,而在外边本想找一个同类工具,但发现 ...

  5. MA均线组合

    MA5.MA13.MA21.MA34.MA55.MA90.MA120.MA250

  6. SqlServer2008到期升级企业版 密钥+图解

    最近使用SQL Server2008,结果Sql Server Management Studio提示过期了,如图: 遇到如上图情况,需要将SQL Server2008升级维护下,还是输入原来的密钥就 ...

  7. Highchart.js

    Highcharts所有的源代码及例子均可通过官网下载得到.初学者只需要简单的修改官方提供的例子即可了解Highcharts. 下载 最新版本:Highcharts 3.0.10.Highstock ...

  8. KnockoutJS 3.X API 第七章 其他技术(6) 使用“fn”添加自定义函数

    有时,您可能会通过向Knockout的核心值类型添加新功能来寻找机会来简化您的代码. 您可以在以下任何类型中定义自定义函数: 因为继承,如果你附加一个函数到ko.subscribable,它将可用于所 ...

  9. java中Set,Map,Stack一些简单用法

    import java.util.Iterator; import java.util.Stack; import java.io.*; import java.util.Set; import ja ...

  10. 两张图总结 Neutron 架构 - 每天5分钟玩转 OpenStack(74)

    前面我们详细讨论了 Neutron 架构,包括 Neutron Server,Core 和 Service Agent.现在用两张图做个总结.先看第一张: 与 OpenStack 其他服务一样,Neu ...