我是新手查看组件,并且不明白为什么我会收到此错误。
public class Last6ClosedJobsViewComponent : ViewComponent
{
private readonly Eva804Context ctx;
public Last6ClosedJobsViewComponent(Eva804Context context)
{
ctx = context;
}
public IViewComponentResult Invoke(int id)
{
var jobs = from j in ctx.Job
.Include(j => j.Site)
.Include(j => j.WaterBody)
.Where(j => j.Site.SiteID == id && j.InvoiceDate != null)
.OrderByDescending(j => j.BookingDate)
.Take(6)
select j;
return View(jobs);
}
}
然后在默认视图中,我只是想在此阶段显示预订日期列表:
@model IEnumerable<Eva804.Models.Job>
<h3>Recently Invoiced Jobs</h3>
<ul>
@foreach (var j in Model)
{
<li>@j.BookingDate</li>
}
</ul>
然后在网站详情中我有以下内容:
<div class="alert alert-success">@Component.InvokeAsync("Last6ClosedJobs",Model.SiteID)</div>
与我正在反对的例子相比,所有这些看起来都是正确的。
然后在视图中显示一个情人般的绿色部分,漂亮和措辞如下: System.Threading.Tasks.Task`1 [Microsoft.AspNetCore.Html.IHtmlContent]
如何找到此错误?我应该在哪里看?我无法看到我的代码有什么问题吗?
答案 0 :(得分:19)
您需要@await
来处理异步调用,如下所示:
<div class="alert alert-success">@await Component.InvokeAsync("Last6ClosedJobs",Model.SiteID)</div>
InvokeAsync
返回一个Task,然后@await
等待任务,任务完成后返回结果。