Как показать динамическую категорию на странице бритвы? - PullRequest
0 голосов
/ 07 июля 2019

У меня есть динамическая категория с подкатегорией ... я не могу показать на своей странице бритвы, я использовал 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();
    }

моя страница бритвы

1 Ответ

0 голосов
/ 08 июля 2019

Вот простой проработанный пример, на который можно сослаться:

Категория модели

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>
...