我正在建立一个简单的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>
答案 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
使用局部视图