C# 使用Asp.net核心Mvc中的视图组件递归具有两个表的动态菜单

C# 使用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

我想使用view组件在asp.net core mvc布局页面中显示动态菜单。在我的数据库表中,有ParentMenud和menu table中的Menud。因此,如果parentmenuid为null,则显示父菜单导航;如果parentcategoryId等于categoryid,则显示嵌套子菜单,我希望通过递归显示此类内容。如果有人有解决方案,请帮助我,如果有任何其他方法,请给出一个例子。我已经做了一些代码,请帮我做这个

组件->导航菜单.cs

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)=> @
      @foreach(猫中的猫) {
    • @猫名 @if(cat.Child.Count()>0) {
    • @ShowMenu(cat.Child,cat)(空)
    • } }
    ; }
  • } } }

Child=model中的模型是什么。在哪里,您能格式化您的代码以便我们更容易地复制它吗?或者你可以试试这个,它有一个递归部分。