I am building a ToDo list app with ASP.NET Core Razor Pages and I am using EF Core.
I have a model that is 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();
}
}
Here's razor page that uses this:
@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>
When I visit this page I get System.NullReferenceException
at Model.ToDos
However, when I change OnGet method to use ToList()
instead:
public void OnGet()
{
ToDos = _context.ToDos.ToList();
}
Everything works perfectly.
Why can't I use ToListAsync()