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

Razor Pages Index页面无法显示外键关联的CityName值问题

问题说明

已在Person类中配置City导航属性关联CityList类:

  • Create页面可正常读取CityList数据填充城市下拉框
  • Details、Edit、Delete页面均可正常读取并显示City导航属性下的CityName值
  • 仅Index页面无法展示CityName的取值
相关代码

实体Model层代码

public class Person
{
    public int CityId { get; set; }
    public virtual CityList City { get; set; }
}

public class CityList
{
    public int Id { get; set; }
    [Display(Name = "Şehir")]
    public string CityName { get; set; }
}

Index.cshtml视图代码

@foreach (var item in Model.People) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.City.CityName)
        </td>
    </tr>
}
问题原因

缺失的是Index接口查询数据时对关联导航属性的加载配置:
Details、Edit、Delete页面都是查询单条Person记录,EF可基于外键CityId、结合变更跟踪机制自动补全关联的City数据,延迟加载可正常触发;但Index页面是批量查询Person列表,若不显式指定加载关联的City数据,默认查询不会自动填充City导航属性,导致item.City为null,视图自然无法渲染出CityName值。

修复方法

找到Person控制器中Index对应的Action方法,在查询Person列表时通过Include方法预加载City关联数据即可,示例代码:

// 先引入EF Core所需命名空间
using Microsoft.EntityFrameworkCore;

public IActionResult Index()
{
    var people = _context.Persons
        .Include(p => p.City) // 新增该行,预加载关联的城市数据
        .ToList();
    return View(people);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:36:28