使用 ToAsyncList() 查询数据库后出现 NullReferenceException,但在使用 ToList() 时不会出现 NullReferenceException

NullReferenceException after querying database using ToAsyncList() but not when ToList() is used

我正在使用 ASP.NET Core Razor Pages 构建一个 ToDo 列表应用程序,并且我正在使用 EF Core。

我有一个模型是 ToDo

public class ToDo
{
    public int Id { get; set; }
    public string Title { get; set; }
    public bool IsCompleted { get; set; }
}

继承人页面模型:

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()

你试过吗?

    public async Task OnGetAsync()
    {
        ToDos = await _context.ToDos.ToListAsync();
    }