【发布时间】:2021-04-27 13:52:00
【问题描述】:
我正在使用 ASP.NET Core Razor Pages 构建一个待办事项列表应用程序,并且我正在使用 EF Core。
我有一个 ToDo 模型
public class ToDo
{
public int Id { get; set; }
public string Title { get; set; }
public bool IsCompleted { get; set; }
}
Heres PageModel:
public class IndexModel : PageModel
{
public IEnumerable<ToDo> ToDos { get; set; }
// constructor and DI code omitted
public async void OnGet()
{
ToDos = await _context.ToDos.ToListAsync();
}
}
这是使用这个的剃须刀页面:
@page
@model IndexModel
@{
Layout = "_Layout";
}
<div>
@foreach(var todo in Model.ToDos)
{
<h4>@todo.Title</h4>
<p>Is Completed: @(todo.IsCompleted ? "Yes" : "No")</p>
}
</div>
当我访问此页面时,我在Model.ToDos 收到System.NullReferenceException
但是,当我将 OnGet 方法更改为使用 ToList() 时:
public void OnGet()
{
ToDos = _context.ToDos.ToList();
}
一切都很完美。
为什么我不能使用ToListAsync()
【问题讨论】:
-
寻找
OnGetAsync... -
你至少应该把
public async void OnGet()改成public async Task OnGet() -
@Damien_The_Unbeliever 即使在使用 OnGetAsync 时仍会引发异常。
-
@phuzi 你为什么推荐它?
标签: c# asp.net-core entity-framework-core razor-pages nullreferenceexception