• MVC 中 Razor 无限分类的展示


    在MVC的Razor视图展示无级分类的办法,在网上看了很多资料,大多搞得很高大上。可能本人水平有限,实在是不会用。

    那我就用最简单爆力的办法来做。

    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

    递归获取数据,然后返回给视图

     1        abcContext db = newabcContext();
     2         public ActionResult Index()
     3         {
     4             var categoryList = GetCategoryList(0);
     5             return View(categoryList);
     6         }
     7 
     8         [NonAction]
     9         public List<NewsCategoriesViewModel> GetCategoryList(int Id)
    10         {
    11             List<NewsCategoriesViewModel> uvModel = new List<NewsCategoriesViewModel>();
    12 
    13 
    14             var perentList = db.Set<NewsCategory>().Where(p => p.ParentCategoryId == Id).ToList();
    15             
    16             if (perentList.Count > 0)
    17             {
    18                 foreach (var item in perentList)
    19                 {
    20                     NewsCategoriesViewModel userViewModel = new NewsCategoriesViewModel
    21                     {
    22                         Id = item.CategoryId,
    23                         Name = item.CategoryName,
    24                         children = new List<NewsCategoriesViewModel>()
    25                     };
    26                     List<NewsCategoriesViewModel> tempList = GetCategoryList(item.CategoryId);
    27                     if (tempList.Count > 0)
    28                     {
    29                         //这里出错了;
    30                         //userViewModel.children.Add(tempList);
    31                         userViewModel.children = tempList;
    32                     }
    33                     uvModel.Add(userViewModel);
    34                 }
    35             }
    36             return uvModel;
    37         }
    38     }

    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)

    打完收功!

  • 相关阅读:
    O(logn)的乘方算法
    求递归算法时间复杂度:递归树
    Xcode6 创建静态库
    Intellij IDEA使用总结
    使用Entity Framework迁移完数据库后,每次修改代码(非模型代码)后都报错。
    Entity Framework Code First数据库自动更新
    Java中 堆 栈,常量池等概念解析(转载)
    使用MyEclipse9.0开发Web Service
    (转) Java源码阅读的真实体会
    Hibernate注解版设计学生、课程、成绩的关系映射
  • 原文地址:https://www.cnblogs.com/micenote/p/5032497.html
Copyright © 2020-2023  润新知