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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:39:03