【问题标题】:Handlers error using ASP.NET CORE 2 Razor Pages使用 ASP.NET CORE 2 Razor 页面的处理程序错误
【发布时间】:2018-05-30 07:51:35
【问题描述】:

我正在尝试在我的 ASP.NET Core 2 Razor 应用程序中使用处理程序函数,在我的模型中我有这个方法:

public async Task<IActionResult> OnPostAddBookingAsync(int? id)
    {
        LoadAvailableRooms();

        TemporaryBookingTable tbt = new TemporaryBookingTable();

        var TemporaryBookingList = from c in _context.TemporaryBookingTables
                                   select c;

        if (!_context.TemporaryBookingTables.Any(t => t.RoomID == id))
        {
            tbt.CustomerID = 0;
            tbt.RoomID = Convert.ToInt16(id);
            tbt.UserID = 0;
            _context.TemporaryBookingTables.Add(tbt);
            await _context.SaveChangesAsync();
        }

        foreach (var item in TemporaryBookingList)
        {
            SelectedRoom = await _context.Rooms.FirstOrDefaultAsync(r => r.RoomID == item.RoomID);
            Room.Add(SelectedRoom);
        }

        return Page();
    }

我正在尝试做的是......在我的 html razor 页面中,我有一个列表,每个项目都有一个用于删除所选项目的按钮。

剃刀页面:

@{
    foreach (var item in Model.Room)
    {
<div>
    <h3>@Html.DisplayFor(modelItem => item.RoomType)</h3>
    <h4>@Html.DisplayFor(modelItem => item.RoomPrice)</h4>
    <form method="post">
        <input type="hidden" />
        <button type="submit" asp-page-handler="DeleteBooking" asp-route-id="@item.RoomID" class="btn btn-default btn-sm">Eliminar</button>
    </form>

</div>
    }

}

当我尝试使用 url 访问此页面时: http://localhost:62755/admin/Booking

我收到此错误:

NullReferenceException: Object reference not set to an instance of an object.
SomethingNewDemo.Pages.admin.Booking_Page+<>c__DisplayClass17_1+<<ExecuteAsync>b__3>d.MoveNext() in Booking.cshtml
+
            <button type="submit" asp-page-handler="DeleteBooking" asp-route-id="@item.RoomID" class="btn btn-default btn-sm">Eliminar</button>
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext+<GetChildContentAsync>d__31.MoveNext()
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
System.Runtime.CompilerServices.TaskAwaiter.GetResult()
Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper+<ProcessAsync>d__7.MoveNext()
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner+<RunAsync>d__0.MoveNext()
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
SomethingNewDemo.Pages.admin.Booking_Page+<ExecuteAsync>d__17.MoveNext() in Booking.cshtml
+
        <h4>@Html.DisplayFor(modelItem => item.RoomPrice)</h4>

感谢阅读,你有遇到过这样的问题吗?

【问题讨论】:

    标签: c# asp.net asp.net-mvc razor asp.net-core


    【解决方案1】:

    您需要在视图操作结果中将模型作为参数传递,否则模型数据不会发送到视图,您将获得账单参考。将控制器操作的最后一行更改为以下内容:

    //假设TemporaryBookingTable就是你要显示的 返回页面(TemporaryBookingTable);

    【讨论】:

    • 这并不能解决问题,问题是当我尝试在 Value 或 asp-router-id 等属性中使用“@item.RoomID”时,当我取下属性页面加载没有错误。
    猜你喜欢
    • 2020-05-31
    • 2018-12-24
    • 1970-01-01
    • 2021-08-18
    • 2019-03-09
    • 1970-01-01
    • 2018-08-17
    • 2019-08-02
    • 2018-03-17
    相关资源
    最近更新 更多