C# 使用Asp.net核心Mvc中的视图组件递归具有两个表的动态菜单
我想使用view组件在asp.net core mvc布局页面中显示动态菜单。在我的数据库表中,有ParentMenud和menu table中的Menud。因此,如果parentmenuid为null,则显示父菜单导航;如果parentcategoryId等于categoryid,则显示嵌套子菜单,我希望通过递归显示此类内容。如果有人有解决方案,请帮助我,如果有任何其他方法,请给出一个例子。我已经做了一些代码,请帮我做这个 组件->导航菜单.csC# 使用Asp.net核心Mvc中的视图组件递归具有两个表的动态菜单,c#,jquery,asp.net-mvc-4,recursion,asp.net-core-mvc,C#,Jquery,Asp.net Mvc 4,Recursion,Asp.net Core Mvc,我想使用view组件在asp.net core mvc布局页面中显示动态菜单。在我的数据库表中,有ParentMenud和menu table中的Menud。因此,如果parentmenuid为null,则显示父菜单导航;如果parentcategoryId等于categoryid,则显示嵌套子菜单,我希望通过递归显示此类内容。如果有人有解决方案,请帮助我,如果有任何其他方法,请给出一个例子。我已经做了一些代码,请帮我做这个 组件->导航菜单.cs public IViewComponentRe
public IViewComponentResult Invoke()
{
var model = new ViewModel();
var menu = _menuservice.GetMenus();
var categorylist = _categoryservice.GetCategories();
var modela = menu.OrderBy(x => x.DisplayOrder).Select(x => new
ViewModel
{
Id = x.Id,
Name = x.Name,
ParentMenuId = x.ParentMenuId,
PageUrl = x.PageUrl,
DisplayName = x.DisplayName,
DisplayAdmin = x.DisplayAdmin,
AdminPageUrl=x.AdminPageUrl,
DisplayFrontend = x.DisplayFrontend,
}).ToList();
model = categorylist.Where(x => x.ParentCategoryId == null)
.Select(e => new ViewModel
{
Id = e.Id,
Name = e.Name,
ParentCategoryId = e.ParentCategoryId,
IncludeInMenu = true,
IsCategory = true,
Child = categorylist.Where(x3 =>
x3.ParentCategoryId == e.Id).ToList()
}).ToList();
var modelc = modela.Union(model).ToList();
return View(modelc);
}
Default.cshtml
@使用Microsoft.AspNetCore.Html
@使用SarvamCart.Domain.Models
@模型IEnumerable
@foreach(模型中的var项目)
{
@if(item.ParentMenuId==null&&item.DisplayFrontend==true)
{
-
}
其他的
{
@如果(item.DisplayName==“产品”)
{
-
@ShowMenu(Model.ToList(),new ViewModel())(空)
@{
Func ShowMenu(列出猫、ViewModelparent)=>
@
}
;
}
}
}
}
Child=model中的模型是什么。在哪里,您能格式化您的代码以便我们更容易地复制它吗?或者你可以试试这个,它有一个递归部分。