ASP.NET Core中如何在Property详情页通过PropertyDetailsVM显示PropertyStatus的Title
问题根源
EF Core默认不会主动加载导航属性,你当前通过仓储查询Property对象时没有加载关联的PropertyStatus,导致property.PropertyStatus为null,视图模型拿到空值自然无法展示Title字段。
解决步骤
1. 修改仓储查询逻辑(推荐)
调整你_propertyRepository中GetById方法的查询逻辑,主动引入PropertyStatus关联表:
// 先引入EF Core命名空间 using Microsoft.EntityFrameworkCore; public Property GetById(int id) { return _context.Properties // 新增Include加载关联的PropertyStatus .Include(p => p.PropertyStatus) .FirstOrDefault(p => p.Id == id); }
2. 补充Controller返回逻辑
你当前贴出的Controller代码中,视图模型赋值完成后没有返回给视图,需要补上:
var viewModel = new PropertyDetailsVM { Property = property, Id = property.Id, Title = property.Title, Slug = property.Slug, PropertyStatus = property.PropertyStatus }; // 新增返回视图逻辑 return View(viewModel);
3. 视图中调用展示
在对应的.cshtml详情视图中,直接通过视图模型取PropertyStatus的Title字段即可,建议加空值判断避免空引用报错:
<!-- 按需放到你要展示的位置即可 --> <p>房源状态:@(Model.PropertyStatus?.Title ?? "暂无状态")</p>
可选优化
你当前的视图模型PropertyDetailsVM已经包含了完整的Property对象,无需重复赋值Id、Title、Slug这些重复字段,直接在视图中通过Model.Property.Title这类方式调用即可,简化赋值逻辑。
内容的提问来源于stack exchange,提问作者userKG
相关产品推荐
相关产品推荐

