как поместить подкатегорию точно под категорию в раскрывающемся списке asp.net core mvc? - PullRequest
0 голосов
/ 16 октября 2018

Я мог бы связать каждую подкатегорию с категорией рекурсивным способом, и все правильно.Но я хочу поместить подкатегорию точно под категорию.Но сейчас пользователь не может понять, какая подкатегория связана с другими категориями. На самом деле, я хочу указать каждую подкатегорию для своей категории, вот и все. Если у вас есть идея, я бы знал об этом. Этот стиль я хочу использовать ввыпадающий список (я имею в виду текст вместе с тире).это мой выпадающий список, а не тире и, конечно, каждая подкатегория должна быть в своей категории.точно так же, как вторая картина.enter image description here

enter image description here

News

-Sport News

--Soccer News

--- Beach Soccer News

-Political News

public class Category
    {

        public Category()
        {
            Categories = new List<Category>();
        }

        public int CategoryID { get; set; }
        [Required]
        [Display(Name = "Title")]
        public string CategoryName { get; set; }
        public int? ParenetCategoryID { get; set; }
        public Category ParentCategory { get; set; }
        public ICollection<Category> Categories { get; set; }

    }

    public IActionResult ShowCategory()
    {
        var categories = _context.Categories
            .Where(c => c.ParenetCategoryID == null)
            .Select(c => new Category { CategoryID = c.CategoryID, CategoryName = c.CategoryName }).ToList();
        foreach (var item in categories)
        {
            _repository.ExtractSubCategories(item);
        }

        return View(categories);
    }

 private void ExtractSubCategories(Category category)
        {

            var subcategories = _context.Categories
                .Where(c => c.ParenetCategoryID == category.CategoryID)
                .Select(c => new Category
                {
                    CategoryID = c.CategoryID,
                    CategoryName = c.CategoryName
                }).ToList();


            foreach (var item in subcategories)
            {

                ExtractSubCategories(item);
                category.Categories.Add(item);

            }

        }

    public IActionResult CreateCategory()
    {

        ViewBag.CategoryID = new SelectList(_context.Categories, "CategoryID", "CategoryName");
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult CreateCategory(Category category)
    {

        if (!ModelState.IsValid)
        {
            return NotFound();
        }
        else
        {
            var newCat = new Category
            {
                ParenetCategoryID = category.CategoryID,
                CategoryName = category.CategoryName
            };
            _context.Categories.AddAsync(newCat);
            _context.SaveChangesAsync();
            return RedirectToAction("ShowCategory");
        }

    }

@model CategoryProject2.Models.Category
@{
    ViewData["Title"] = "CreateCategory";
    Layout = "~/Views/Shared/_Admin.cshtml";
}

<div class="col-md-12">
    <div class="card">
        <div class="card-header bg-light">
            Category DropDown
        </div>
        <div class="card-body">
            <form asp-action="CreateCategory" method="post">
                <div class="form-group">
                    <label class="form-control-label"></label>

                    <select class="select2 js-states form-control" asp-for="CategoryID" asp-items="@ViewBag.CategoryID">
                        <option value="">Select</option>
                    </select>
                </div>

                <div class="form-group">
                    <label class="form-control-label" asp-for="CategoryName"></label>
                    <input type="text" asp-for="CategoryName" class="form-control"/>
                    <span asp-validation-for="CategoryName" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary" value="Create" />

                </div>
            </form>
        </div>
    </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...