我是 ASP.NET Core 和 Razor 页面的新手。 我创建了一个按钮并分配了一个页面处理程序来删除条目。 当我尝试删除即时消息时出现空引用错误。 当我运行代码并单击按钮删除条目时, 我得到一个空异常错误
我想知道我在哪里犯了错误,以及一些改进编码的指导。 预先感谢那些提供帮助的人。
这是我的首页
@page
@model BookList.Pages.BookPages.IndexModel
<form method="post">
@if (Model.Books.Count()>0)
{
<table class="table table-dark border">
<tr class="table-secondary">
@foreach (var book in Model.Books)
{
<tr>
<td>
@Html.DisplayFor(m => book.Name)
</td>
<td>
@Html.DisplayFor(m => book.Author)
</td>
<td>
<button class="btn btn-danger btn-sm" asp-page-handler="Delete" asp-route-id="@book.Id" onclick="return confirm('Are you sure you want to delete?')">Delete</button>
<a class="btn btn-success btn-sm" asp-route-id="@book.Id" asp-page="Edit">Edit</a>
</td>
</tr>
}
</table>
}
else
{
<p>No books available</p>
}
</form>
这是我的页面模型
public IEnumerable<Book> Books { get; set; }
public async Task OnGet()
{
Books = await _dbContext.Books.ToListAsync();
}
public async Task<IActionResult> onPostDelete(int id)
{
var book = await _dbContext.Books.FindAsync(id);
if (book == null)
return NotFound();
_dbContext.Books.Remove(book);
await _dbContext.SaveChangesAsync();
return RedirectToPage("Index");
}
}
}
最佳答案
您可以尝试在您的页面中发送一个模型,例如
var allBooks= await _dbContext.Books.ToList();
return View(allBooks);
如果这不起作用,请分享您的整个错误页面,它可能包含严肃的解释。
关于c# - ASP.NET Core Razor 页面值不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62997218/