C# 使用ASP.NET CORE 2 Razor页面时出现处理程序错误

C# 使用ASP.NET CORE 2 Razor页面时出现处理程序错误,c#,asp.net,asp.net-mvc,razor,asp.net-core,C#,Asp.net,Asp.net Mvc,Razor,Asp.net Core,我正在尝试在我的ASP.NET Core 2 Razor应用程序中使用处理程序函数,在我的模型中,我有以下方法: public async Task<IActionResult> OnPostAddBookingAsync(int? id) { LoadAvailableRooms(); TemporaryBookingTable tbt = new TemporaryBookingTable(); var Temporar

我正在尝试在我的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();
    }
PostAddBookingAsync(int?id)上的公共异步任务 { LoadAvailableRooms(); TemporaryBookingTable tbt=新的TemporaryBookingTable(); var TemporaryBookingList=来自上下文中的c。TemporaryBookingTables 选择c; if(!\u context.temporalybookingtables.Any(t=>t.RoomID==id)) { tbt.CustomerID=0; tbt.RoomID=转换为16(id); tbt.UserID=0; _context.TemporaryBookingTables.Add(待定); wait_context.SaveChangesAsync(); } foreach(临时记账列表中的var项目) { SelectedRoom=wait\u context.Rooms.FirstOrDefaultAsync(r=>r.RoomID==item.RoomID); 房间。添加(选定房间); } 返回页(); } 我想做的是。。。在我的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>
    }

}
@{
foreach(模型室中的var项目)
{
@DisplayFor(modelItem=>item.RoomType)
@DisplayFor(modelItem=>item.RoomPrice)
Eliminar
}
}
当我尝试使用url访问此页面时:

我得到这个错误:

NullReferenceException:对象引用未设置为对象的实例。
SomethingNewDemo.Pages.admin.Booking\u Page+c\u显示Booking.cshtml中的Class17\u 1+d.MoveNext()
+
Eliminar
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()异常
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务)
Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext+d_u31.MoveNext()
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()异常
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务)
System.Runtime.CompilerServices.TaskWaiter.GetResult()
Microsoft.AspNetCore.Mvc.TagHelpers.renderatendoformtaghelper+d_u7.MoveNext()
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()异常
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务)
Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner+d_u0.MoveNext()
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()异常
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务)
Booking.cshtml中的SomethingNewDemo.Pages.admin.Booking\u Page+d\u 17.MoveNext()
+
@DisplayFor(modelItem=>item.RoomPrice)

感谢阅读,您处理过类似的问题吗?

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

//假设临时BookingTable是您想要显示的
返回页面(临时预订表)

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

//假设临时BookingTable是您想要显示的
返回页面(临时预订表)

这并不能解决问题,问题是当我尝试在属性likes值或asp路由器id中使用“@item.RoomID”时,当我在没有Aeros的情况下删除页面加载的属性时。这并不能解决问题,问题是当我尝试在属性likes值或asp路由器id中使用“@item.RoomID”时,当我取下属性时,页面加载没有Aeros。
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>