Asp.net mvc 4 如何从类别中创建多级菜单
我有一个类别模型,可以有多个子类别。我想在菜单中显示这些类别,但只能降低一级。如何制作多级菜单解决方案? 我尝试过在局部视图中使用一个helper方法,但它加载了两次 类别模型:Asp.net mvc 4 如何从类别中创建多级菜单,asp.net-mvc-4,Asp.net Mvc 4,我有一个类别模型,可以有多个子类别。我想在菜单中显示这些类别,但只能降低一级。如何制作多级菜单解决方案? 我尝试过在局部视图中使用一个helper方法,但它加载了两次 类别模型: public class Category { public int CategoryId { get; set; } [Required(ErrorMessage = "Fill in a Name")] public string Name { get; set; } public
public class Category
{
public int CategoryId { get; set; }
[Required(ErrorMessage = "Fill in a Name")]
public string Name { get; set; }
public int? ParentCategoryId { get; set; }
public Category ParentCategory { get; set; }
public virtual ICollection Listings { get; set; }
}
填充局部视图菜单的分类控制器
[ChildActionOnly]
public ActionResult GetMenu()
{
IList<Category> catAll = new List<Category>();
catAll = categoriesRepository.All.ToList();
return PartialView("_Menu", catAll);
}
@model List
@foreach (var mp in Model.Where(p => p.ParentCategoryId == null))
{
@mp.Name
@foreach (var menuLevel2 in Model.Where(p => p.ParentCategoryId.Equals(mp.CategoryId)))
{
@menuLevel2.Name
@ShowTree(Model, mp.CategoryId);
}
}
}
@helper ShowTree(List foos, int ParentId)
{
foreach (var menuLevel2 in foos)
{
if (menuLevel2.ParentCategoryId == ParentId)
{
@menuLevel2.Name
}
}
}
你应该从一个表示菜单结构的层次视图模型开始,然后你可以编写一个扩展方法来显示菜单-类似于你应该从一个表示菜单结构的层次视图模型开始,然后你可以编写一个扩展方法来显示菜单-类似于