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

如何修复ASP.NET Core MVC中AspNetCore.Views_Home_Index.ExecuteAsync()空引用错误

解决ASP.NET Core MVC异步分部视图的NullReferenceException问题

从你给出的错误信息和代码来看,这个NullReferenceException明确指向了Index.cshtml的第4行——也就是遍历Model.odabraniArtikli的那一行。问题的核心很清晰:要么传给视图的HomeViewModel实例是null,要么HomeViewModel里的odabraniArtikli集合没有被初始化。

咱们一步步来解决:

1. 优先检查控制器的Index方法

这是最关键的一步,你需要确保控制器在返回视图时,已经给HomeViewModel赋值了有效的odabraniArtikli集合,哪怕是空集合也不能是null。

举个正确的控制器代码示例:

public IActionResult Index()
{
    // 初始化ViewModel,确保odabraniArtikli不会为null
    var homeViewModel = new HomeViewModel
    {
        // 这里可以替换成从数据库/服务获取数据的逻辑
        odabraniArtikli = new List<Artikal>() 
        // 或者如果有真实数据:_artikalService.GetIstaknutiArtikli().ToList()
    };

    return View(homeViewModel);
}

如果你的控制器里只是直接返回View()而没有传入ViewModel实例,那视图里的Model就会是null,自然触发空引用异常。

2. 在视图中添加空值检查(提升健壮性)

即使控制器已经处理了初始化,为了避免后续可能出现的问题,建议在视图里对Model和odabraniArtikli做空值判断:

@using BestDeal.ViewModels
@model HomeViewModel

@await Html.PartialAsync("ArtikalCarouselPocetna")
<h2>Istaknuti artikli</h2>
<div class="row">
    @* 先检查Model和odabraniArtikli是否不为null *@
    @if (Model?.odabraniArtikli != null)
    {
        @foreach (var artikal in Model.odabraniArtikli)
        {
            @Html.Partial("ArtikalPregled", artikal)
        }
    }
    else
    {
        <p>暂时没有推荐商品哦</p>
    }
</div>

3. 关于异步分部视图的说明

你用@await Html.PartialAsync("ArtikalCarouselPocetna")是完全正确的异步渲染方式,这个分部视图本身没有依赖模型,所以它不会导致空引用异常——问题肯定出在Model.odabraniArtikli这部分。

另外,如果这个分部视图不需要返回IHtmlContent,也可以用@await Html.RenderPartialAsync("ArtikalCarouselPocetna"),不过这只是写法差异,和当前的异常无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:09:19