在.NET Core 5.0中,可以使用部分视图来列出无限数量的嵌套类别和子类别。以下是一个示例的步骤:
以下是一个简单的示例代码:
Category.cs(模型类):
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public int? ParentCategoryId { get; set; }
}
CategoryViewModel.cs(视图模型类):
public class CategoryViewModel
{
public int CategoryId { get; set; }
public string Name { get; set; }
public List<CategoryViewModel> ChildCategories { get; set; }
}
_CategoryPartial.cshtml(部分视图):
@model List<CategoryViewModel>
<ul>
@foreach (var category in Model)
{
<li>
@category.Name
@if (category.ChildCategories != null && category.ChildCategories.Count > 0)
{
@Html.Partial("_CategoryPartial", category.ChildCategories)
}
</li>
}
</ul>
CategoryController.cs(控制器):
public class CategoryController : Controller
{
private readonly ApplicationDbContext _context;
public CategoryController(ApplicationDbContext context)
{
_context = context;
}
public IActionResult Index()
{
var categories = _context.Categories.ToList();
var categoryViewModels = BuildCategoryViewModels(categories, null);
return View(categoryViewModels);
}
private List<CategoryViewModel> BuildCategoryViewModels(List<Category> categories, int? parentCategoryId)
{
var categoryViewModels = new List<CategoryViewModel>();
var childCategories = categories.Where(c => c.ParentCategoryId == parentCategoryId).ToList();
foreach (var category in childCategories)
{
var categoryViewModel = new CategoryViewModel
{
CategoryId = category.CategoryId,
Name = category.Name
};
categoryViewModel.ChildCategories = BuildCategoryViewModels(categories, category.CategoryId);
categoryViewModels.Add(categoryViewModel);
}
return categoryViewModels;
}
}
Index.cshtml(主视图):
@model List<CategoryViewModel>
<h1>Categories</h1>
@Html.Partial("_CategoryPartial", Model)
这样,当访问Category控制器的Index动作方法时,将会显示所有类别的层次结构。
请注意,以上示例代码仅为演示如何使用部分视图列出无限数量的嵌套类别和子类别。在实际应用中,可能需要根据具体需求进行适当的修改和扩展。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云数据库(TencentDB)、腾讯云对象存储(COS)等。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。
领取专属 10元无门槛券
手把手带您无忧上云