【问题标题】:How to fix 'AspNetCore.Views_Home_Index.ExecuteAsync()' NullReference error in MVC如何修复 MVC 中的“AspNetCore.Views_Home_Index.ExecuteAsync()”NullReference 错误
【发布时间】:2019-06-09 10:39:40
【问题描述】:

我正在设置一个简单的 ASP.NET Core MVC 项目,其中包含一些我希望异步呈现的部分视图。但似乎无论它们是否异步呈现,我都会收到相同的ExecuteAsync() NullReferenceException 错误。

我检查了所有的模型和 HTML 代码,但它似乎都不起作用,总是返回:

处理请求时发生未处理的异常。 NullReferenceException:对象引用未设置为 目的。 Index.cshtml 中的 AspNetCore.Views_Home_Index.ExecuteAsync(), 第 4 行。

索引.cshtml:

@using BestDeal.ViewModels
@model HomeViewModel

@await Html.PartialAsync("ArtikalCarouselPocetna")

<h2>Istaknuti artikli</h2>
<div class="row">
    @foreach (var artikal in Model.odabraniArtikli)
    {
        @Html.Partial("ArtikalPregled", artikal)
    }
</div>

ArtikalCarouselPocetna 局部视图:


<div class="row carousel-holder marginTop1">
    <div class="col-md-12">
        <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
            <ol class="carousel-indicators">
                <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
                <li data-target="#carousel-example-generic" data-slide-to="1"></li>
                <li data-target="#carousel-example-generic" data-slide-to="2"></li>
            </ol>
            <div class="carousel-inner">
                <div class="item active">
                    <img class="slide-image" src="https://images-na.ssl-images-amazon.com/images/I/71t-J3VJtEL._SX425_.jpg" alt="">
                </div>
                <div class="item">
                    <img class="slide-image" src="https://zdnet1.cbsistatic.com/hub/i/r/2019/04/17/1f68c3a6-495e-4325-bc16-cc531812f0ec/thumbnail/770x433/84ff4194826e8303efb771cd377a854f/chuwi-herobook-header.jpg" alt="">
                </div>
                <div class="item">
                    <img class="slide-image" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRKRl7BqXfZupIBH4N8i-tD45gVPctFV5jKTeTmOIADFhZ8J_DAYQ" alt="">
                </div>
            </div>
            <a class="left carousel-control" href="#carousel-example-generic" data-slide="prev">
                <span class="glyphicon glyphicon-chevron-left"></span>
            </a>
            <a class="right carousel-control" href="#carousel-example-generic" data-slide="next">
                <span class="glyphicon glyphicon-chevron-right"></span>
            </a>
        </div>
    </div>
</div>

【问题讨论】:

  • 嗨,伙计。你能告诉我,你的 partialView 文件在你的项目目录中的什么位置?
  • @evilGenius 在 Views 的 Shared 子文件夹中。
  • 请在您的问题中添加屏幕截图。
  • 来自the docs "不建议使用同步等效项,因为它们在某些情况下会死锁。"
  • @JoeAudette 是的,但是在 foreach 循环中更改调用没有任何好处。

标签: c# asp.net-mvc asp.net-core


【解决方案1】:

你的错误,我认为你的模型是空的。所以你可以像这样检查它 if(model != null) 那么

@foreach (var artikal in Model.odabraniArtikli)
    {
        @Html.Partial("ArtikalPregled", artikal)
    }

所以,我看到您的视图位于不同的文件夹中,这意味着您需要指向完整路径

@await Html.PartialAsync("~/Views/Shered/ArtikalCarouselPocetna.cshtml")

但我建议你最好使用

@{
    await Html.RenderPartialAsync("~/Views/Shered/ArtikalCarouselPocetna.cshtml");
}

或者,您可以使用 RenderPartialAsync 渲染局部视图。此方法不返回 IHtmlContent。它将渲染的输出直接流式传输到响应。因为该方法不返回结果,所以必须在 Razor 代码块中调用它:

@{
    await Html.RenderPartialAsync("_AuthorPartial");
}

由于 RenderPartialAsync 流式传输渲染的内容,它在某些情况下提供了更好的性能。在性能关键的情况下,使用这两种方法对页面进行基准测试,并使用产生更快响应的方法。

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-2.2

还有 我建议您使用带有 _ https://stackoverflow.com/a/10321458/8006943

的部分视图

【讨论】:

  • 恐怕这些建议都不起作用。它现在突出显示 RenderPartialAsync,但错误保持不变:AspNetCore.Views_Home_Index.ExecuteAsync() in Index.cshtml,第 5 行
  • 看起来很奇怪,在你的局部视图中你没有使用任何模型。您能否用模型评论您的循环并重试。(@foreach(Model.odabraniArtikli 中的var artikal){@Html.Partial(“ArtikalPregled”,artikal)})
  • 没有它它工作得很好,但它不会加载 HTML(我在某种程度上感到惊讶)。什么可能导致这种行为?
  • 您的模型可以为空,或者您的 odabraniArtikli 可以为空,或者您的部分可以为空。所以我会更新我的答案,因为我添加了一些好的建议。
  • 所以,我需要走了,你只需要了解你的模型中有 null 的位置,只是你想出它的断点
猜你喜欢
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
相关资源
最近更新 更多