c# - ASP.NET Core Razor 页面值不能为空

标签 c# asp.net asp.net-core razor-pages

我是 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/

相关文章:

c# - 如何从项目集合中选择特定项目?

javascript - 无法使用 javascript 将 http POST 请求发送到 ASP.NET Web api Controller

c# - 您如何模拟 IAsyncEnumerable?

asp.net-core - Ocelot API 网关可选参数

C#最顶层窗口

c# - 使用NEST(ElasticSearch)搜索嵌套数组

c# - 从谷歌浏览器打开 Internet Explorer

asp.net - 如何在 Web 应用程序客户端录制音频并将其保存在 Web 服务器中?

asp.net-core - 如何保护开放/公共(public) Web API 端点

C# - 如何在列表框(Windows 窗体)内上下移动多个项目