Я создаю простое приложение todo в Razor Pages с помощью .NET Core 2.2:
public class IndexModel : PageModel
{
private readonly ApplicationDbContext _context;
public List<TodoItem> TodoItems { get; set; }
public IndexModel(ApplicationDbContext context)
{
_context = context;
}
public async Task OnGet()
{
TodoItems = await _context.TodoItems.Where(t => t.IsDone == false).ToListAsync();
}
но всякий раз, когда я выполняю этот код:
public async Task<IActionResult> OnPostMarkDoneAsync(int id)
{
if (!ModelState.IsValid)
{
return Page();
}
var item = TodoItems.First(t => t.Id == id);
item.IsDone = true;
_context.TodoItems.Update(item);
var ok = await _context.SaveChangesAsync();
if (ok != 1)
{
return BadRequest(500);
}
return RedirectToPage();
}
Я всегда получаю нулевое исключение. Кроме того, даже если он находится на той же странице.
Когда я запускаю приложение, список TodoItems заполняется правильными данными. Но всякий раз, когда я выполняю метод OnPostMarkDoneAsync и отлаживаю его, он показывает, что список теперь равен нулю. Почему это так?