Создание категорий и подкатегорий в моей форме RazorPage - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь создать форму с категорией и подкатегорией, все из которых имеют флажки, и использую ее для установки категорий услуг и подкатегорий. Я пытаюсь какой-то метод, например, используя SelectListItem, но я не могу использовать его для отступа флажок. это моя диаграмма базы данных (я знаю, что это нехорошо, но клиент этого хотел): Диаграмма услуг

Мой метод составления списка SelectListItem для основной и подкатегорий:

public List<SelectListItem> GetAllMajorCategories()
    {
        return _context.CategoriesTbl
            .Where(c => c.ParentId == null)
            .Select(c => new SelectListItem
            {
                Value = c.CategoryId.ToString(),
                Text = c.Title
            }).ToList();
    }

    public List<SelectListItem> GetAllSubCategories()
    {
        return _context.CategoriesTbl
            .Where(c => c.ParentId == c.CategoryId)
            .Select(c => new SelectListItem
            {
                Value = c.ParentId.ToString(),
                Text = c.Title
            }).ToList();
    }

Затем я использую эти два метода в моей PageModel:

public void OnGet()
    {
        MainCategories = _serviceServices.GetAllMajorCategories();
        SubCategories = _serviceServices.GetAllSubCategories();
    }

Затем в Razorview я хочу создать флажок для каждой MajorCategory и ее подкатегорий, но я не могу.

    <div class="form-group">
@foreach (var item in Model.MainCategories)
    {
        <div class="icheckbox_minimal-blue">
        <input type="checkbox" class="minimal" id="majorCat" name="majorCat" value="@item.Value">
        <label> @item.Text </label>
        </div>
    }
</div>

Как я могу это сделать?

1 Ответ

0 голосов
/ 27 февраля 2020

Согласно вашему комментарию, метод GetAllSubCategories () вернул неправильный список , вам просто нужно вернуть список CategoriesTbl, когда ParentId не равен нулю.

Пожалуйста, обратитесь к следующему коду для деталей:

PageModel.cs

 public void OnGet()
    {
        MainCategories = GetAllMajorCategories();
        SubCategories = GetAllSubCategories();
    }
    public List<SelectListItem> GetAllMajorCategories()
    {
        return _context.CategoriesTbl
     .Where(c => c.ParentId == null)
     .Select(c => new SelectListItem
     {
         Value = c.CategoryId.ToString(),
         Text = c.Title
     }).ToList();
    }

    public List<CategoriesTbl> GetAllSubCategories()
    {
        return _context.CategoriesTbl.Where(c => c.ParentId != null).ToList();
    }

Просмотр:

@page
@model WebApplication1_rzaor_page.ShowCheckboxModel
@{
    ViewData["Title"] = "ShowCheckbox";
    Layout = "~/Pages/Shared/_Layout.cshtml";
}

<h1>ShowCheckbox</h1>

<div class="form-group"> 
    @foreach (var item in Model.MainCategories)
    {
        <div class="icheckbox_minimal-blue">
            <input type="checkbox" class="minimal" id="majorCat" name="majorCat" value="@item.Value">
            <label>@item.Text</label>
        </div>
        <ul>
            @foreach (var subitem in Model.SubCategories.Where(x => x.ParentId == Convert.ToInt32(item.Value)).ToArray())
            {
                <li>
                    <input type="checkbox" class="minimal" id="subCat" name="subCat" value="@subitem.CategoryId">
                    <label>@subitem.Title</label>
                </li>
            }

        </ul>
    }
</div>

Вот результат:

enter image description here

...