如何修复MVC中的'AspNetCore.Views_Home_Index.ExecuteAsync()'NullReference错误

时间:2019-06-09 10:39:40

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

我正在建立一个简单的ASP.NET Core MVC项目,其中包括一些我想异步呈现的局部视图。但是看来,无论它们是否异步呈现,我都会不断收到相同的ExecuteAsync() NullReferenceException错误。

我已经检查了所有模型和HTML代码,但似乎两种方法都不起作用,总是返回:

  

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

Index.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>

My Views folder

1 个答案:

答案 0 :(得分:1)

您输入的错误,我认为您的模型为空。所以你可以这样检查 如果(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

使用局部视图