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

ASP.NET Core 6 MVC:如何在Home视图展示Work模型数据

解决ASP.NET Core 6 MVC Home/Index视图NullReferenceException问题

问题原因

你在Home/Index视图中声明了IEnumerable<Website.Models.Work>类型的模型,但Home控制器的Index方法没有向视图传递该模型实例,导致视图里的Model为null,遍历的时候触发NullReferenceException。

解决方案

1. 更新Home控制器的Index方法

在Home控制器中注入数据上下文(或Work相关服务),查询最新4条Work数据并传递给视图:

using Microsoft.EntityFrameworkCore;
using Website.Models;

public class HomeController : Controller
{
    private readonly YourDbContext _dbContext; // 替换成你的实际DbContext类名

    public HomeController(YourDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    public async Task<IActionResult> Index()
    {
        // 按创建时间倒序获取最新4条数据(替换CreatedAt为你的时间字段,或用Id自增字段)
        var latestWorks = await _dbContext.Works
            .OrderByDescending(w => w.CreatedAt)
            .Take(4)
            .ToListAsync();
        
        return View(latestWorks);
    }
}

2. 给视图添加空值判断(可选但推荐)

在视图中增加空值校验,避免无数据时再次报错:

@model IEnumerable<Website.Models.Work>                

@if (Model != null && Model.Any())
{
    foreach (var item in Model)
    {
        <div class="col-lg-3 col-sm-6">
            <div class="gallery-item wow fadeInUp delay-0-2s">
                <img src="~/assets/images/gallery/gallery-1.jpg" alt="Gallery">
                <div class="gallery-content">
                    <span class="category"><a href="portfolio-details.html">@Html.DisplayFor(modelItem => item.Tag)</a></span>
                    <h5><a href="portfolio-details.html">@Html.DisplayFor(modelItem => item.Headline)</a></h5>
                </div>
            </div>
        </div>
    }
}
else
{
    <p>暂无作品展示</p>
}

注意事项

  • 确保YourDbContext已在Program.cs中注册为服务:
    builder.Services.AddDbContext<YourDbContext>(options =>
        options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
    
  • 替换代码中的CreatedAt为你Work模型中用于排序的实际字段(比如发布时间、Id等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:55:20