MVC 中 Razor 无限分类的展示
2015-12-09 13:08
363 查看
在MVC的Razor视图展示无级分类的办法,在网上看了很多资料,大多搞得很高大上。可能本人水平有限,实在是不会用。
那我就用最简单爆力的办法来做。
Model:
ViewModel
Controller
递归获取数据,然后返回给视图
View
定义一个视图方法,然后递归调用。
打完收功!
那我就用最简单爆力的办法来做。
Model:
public class NewsCategory { [Key] public int CategoryId { get; set; } public int ParentCategoryId { get; set; } [Required] [StringLength(50)] public string CategoryName { get; set; } }
ViewModel
public class NewsCategoriesViewModel { public int Id { get; set; } public string Name { get; set; } public List<NewsCategoriesViewModel> children { get; set; } }
Controller
递归获取数据,然后返回给视图
abcContext db = newabcContext(); public ActionResult Index() { var categoryList = GetCategoryList(0); return View(categoryList); } [NonAction] public List<NewsCategoriesViewModel> GetCategoryList(int Id) { List<NewsCategoriesViewModel> uvModel = new List<NewsCategoriesViewModel>(); var perentList = db.Set<NewsCategory>().Where(p => p.ParentCategoryId == Id).ToList(); if (perentList.Count > 0) { foreach (var item in perentList) { NewsCategoriesViewModel userViewModel = new NewsCategoriesViewModel { Id = item.CategoryId, Name = item.CategoryName, children = new List<NewsCategoriesViewModel>() }; List<NewsCategoriesViewModel> tempList = GetCategoryList(item.CategoryId); if (tempList.Count > 0) { //这里出错了; //userViewModel.children.Add(tempList); userViewModel.children = tempList; } uvModel.Add(userViewModel); } } return uvModel; } }
View
定义一个视图方法,然后递归调用。
@model List<NewsCategoriesViewModel> @helper DisplayList(List<NewsCategoriesViewModel> model) { if (model.Count > 0) { <ul> @foreach (var item in model) { <li>@item.Name</li> if (item.children.Count > 0) { @DisplayList(item.children); } } </ul> } } @DisplayList(Model)
打完收功!
相关文章推荐
- DirectX11学习笔记
- 直接通过浏览器打开Android App 应用
- shell 脚本替换,编辑jar包
- 稀疏傅里叶变换(频率降采样)
- notepad++ 加粗或字体变大成为粗体怎么办
- Spark 调优
- 冷市攻略:Listo 教你 25 今天的社会 Swift 语言 - 02 Swift Tour
- 线程GCD
- SqlCipher在Android上数据库的加密
- linux备份mysql并上传FTP
- 孩子经不经常看电视的差别居然这么大!
- 在opencv3中实现机器学习之:利用逻辑斯谛回归(logistic regression)分类
- [Javascript] DOM
- maven3 手动安装本地jar到仓库
- Oracle在更改机器名后服务无法启动的解决方法
- OpenStack里如何安装配置大数据平台管理组件Sahara
- StringBuilder在高性能场景下的正确用法
- 一周总结2
- online_judge_1036
- Hbuider制作app升级包的简单办法 (升级官方提供的案例)