public JsonResult GetCategories() { nDownloadEntities entities = new nDownloadEntities(); List<Category> categories = entities.Categories.ToList(); var sb = new StringBuilder(); var roots = GetRoots(categories); string unorderedList = GenerateUL(roots, categories, sb); return Json(unorderedList, JsonRequestBehavior.AllowGet); } [NonAction] private List<Category> GetRoots(List<Category> categories) { var roots = categories.Where(x => x.ParentId == 0).ToList(); return roots; } [NonAction] private string GenerateUL(List<Category> parents, List<Category> categories, StringBuilder sb) { sb.AppendLine("<ul>"); if (parents.Count > 0) { foreach (Category category in parents) { string line = String.Format(@"<li>{0}", category.CategoryText); sb.Append(line); List<Category> subMenu=categories.Where(x=>x.ParentId==category.CategoryId).ToList(); if (subMenu.Any()) { var subMenuBuilder = new StringBuilder(); sb.Append(GenerateUL(subMenu, categories, subMenuBuilder)); } sb.Append("</li>"); } } sb.Append("</ul>"); return sb.ToString(); }
Keywords :
ul , li , treeview , menu , recursive