You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在子分类展示页面通过分类ID获取并展示分类名称

解决方案:通过分类ID获取并展示分类名称

控制器层处理

在对应Action中,通过传入的分类ID查询目标分类的名称,并存入ViewBag:

public ActionResult SubCategories(int id)
{
    // 查询当前分类下的子分类列表
    var subCategories = _dbContext.SubCategories.Where(sc => sc.CategoryId == id).ToList();
    // 根据ID查询分类信息
    var targetCategory = _dbContext.Categories.FirstOrDefault(c => c.Id == id);

    // 传递数据到视图
    ViewBag.subCategories = subCategories;
    ViewBag.id = id;
    ViewBag.CategoryName = targetCategory?.Name; // 存入分类名称,空值时返回null

    return View();
}

视图层展示

在视图中直接从ViewBag读取分类名称,和已有的ID一起展示:

@{
    List<SubCategory1> subCategories1 = (List<SubCategory1>)ViewBag.subCategories;
    int id = (int)ViewBag.id;
    // 处理空值,避免页面显示异常
    string categoryName = ViewBag.CategoryName ?? "分类不存在";
}

<!-- 顶部显示分类信息 -->
<p>分类ID:@id</p>
<p>分类名称:@categoryName</p>

<!-- 子分类列表展示区域 -->
@foreach(var subCat in subCategories1)
{
    <div>@subCat.Name</div>
}

关于你之前的尝试说明

你在实体中添加导航属性的思路是对的,但错误在于将整个分类列表存入ViewBag,而非根据ID查询单个分类。如果想通过实体关联优化查询,可在SubCategory实体中补充外键和导航属性:

public class SubCategory1
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int CategoryId { get; set; } // 外键,关联Categories表的Id
    public virtual Category Category { get; set; } // 导航属性
}

但这种方式更适合需要在子分类列表中展示所属分类的场景,当前仅需顶部显示分类名称,直接查询单个分类的效率更高。

内容的提问来源于stack exchange,提问作者Tirzah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:15:27