Я мог бы связать каждую подкатегорию с категорией рекурсивным способом, и все правильно.Но я хочу поместить подкатегорию точно под категорию.Но сейчас пользователь не может понять, какая подкатегория связана с другими категориями. На самом деле, я хочу указать каждую подкатегорию для своей категории, вот и все. Если у вас есть идея, я бы знал об этом. Этот стиль я хочу использовать ввыпадающий список (я имею в виду текст вместе с тире).это мой выпадающий список, а не тире и, конечно, каждая подкатегория должна быть в своей категории.точно так же, как вторая картина.
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>