处理程序使用 ASP.NET CORE 2 剃刀页面时出错



我正在尝试在我的 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>

感谢您的阅读,您是否处理过此类问题?

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

假设 TemporaryBookingTable 是您想要显示的内容 返回页面(临时预订表(;

最新更新