使用 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();
}
我正在使用 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();
}