如何在剃须刀页面中显示动态类别?

时间:2019-07-07 20:09:17

标签: c# asp.net-core foreach categories razor-pages

我创建了带有子类别的动态类别... 我无法在我的foreach的剃刀页面上显示,但foreach为2步类别或3步,我的类别具有无限步数 请帮我

public class vmCategoryForSearch
{
    public int CategoryId { get; set; }
    public string titleEn { get; set; }
    public bool isDelete { get; set; }
    public List<vmCategoryForSearch> Children { get; set; }
}

如何调用此代码

public List<vmCategoryForSearch> GetAllCategoryForSearchClients()
    {
        return catsearchList.Where(mm => mm.ParentId == 0).Select(m => new vmCategoryForSearch
        {
            titleEn = m.titleEn,
            titleFa = m.titleFa,
            Children = GetAllCategoryForSearchClients(m.SubId)
        }).ToList();
    }

private List<vmCategoryForSearch> GetAllCategoryForSearchClients(int id)
    {
        return catsearchList.Where(sm => sm.ParentId == id).Select(vm => new vmCategoryForSearch
        {
            titleEn = vm.titleEn,
            titleFa = vm.titleFa,
            Children = GetAllCategoryForSearchClients(vm.SubId)
        }).ToList();
    }

my razor page

1 个答案:

答案 0 :(得分:0)

这是一个简单的示例,您可以参考:

类别模型

public class Category
{
    public int Id { get; set; }
    public string  Name { get; set; }

    public int ParentId { get; set; }
}

vmCategoryForSearch

public class vmCategoryForSearch
{
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public List<vmCategoryForSearch> Children { get; set; }
}

PageModel

private readonly RazorPages2_1Project.Data.RazorPagesDbContext _context;
    private readonly List<Category> list;

    public CreateModel(RazorPages2_1Project.Data.RazorPagesDbContext context)
    {
        _context = context;
        list = _context.Category.ToList();
    }

    public IActionResult OnGet()
    {
        CategoryList = GetAllCategoryForSearchClients();
        return Page();
    }

    [BindProperty]
    public List<vmCategoryForSearch> CategoryList { get; set; }

    public List<vmCategoryForSearch> GetAllCategoryForSearchClients()
    {
        var result= list.Where(mm => mm.ParentId == 0).Select(m => new vmCategoryForSearch
        {
            Name = m.Name,
            Children = GetAllCategoryForSearchClients(m.Id)
        }).ToList();
        return result;
    }

    private List<vmCategoryForSearch> GetAllCategoryForSearchClients(int id)
    {
        var result1 = list.Where(sm => sm.ParentId == id).Select(vm => new vmCategoryForSearch
        {
            Name = vm.Name,
            Children = GetAllCategoryForSearchClients(vm.Id)
        }).ToList();
        return result1;
    }
}

剃刀页面

<div class="c-box_item">
     @foreach(var item in Model.CategoryList)
     {
          <ul >
             <li>
             <span><a href="#"> @item.Name</a></span>
             <div>
                 @foreach(var subitem in item.Children)
                  {
                    <ul>
                       <li>
                       <span><a href="#"> @subitem.Name</a></span>
                       <div>
                          @if (subitem.Children.Count > 0)
                          {
                              @foreach (var subitems in subitem.Children)
                              {}
                          }
                        </div>
                        </li>
                      </ul>                                        
               }
             </div>
            </li>
       </ul>
    }
</div>