提交表单返回对象的初始化而不是空mvc c#

本文关键字:mvc 初始化 表单 返回 对象 提交 | 更新日期: 2023-09-27 18:16:26

[HttpPost]    
public async Task<ActionResult> Create(BookingViewModel bookingview, BookingDetailsViewModel bookingdetails)

我遇到了一个问题,当我提交表单时,如果我没有显示与它相关的PartialView,我期望bookingdetails为null

@if (Model.StepNumber == (int)Booking_Steps.BookingDetails)
 {
   @Html.Partial("_Booking_Details", Model.BookingDetails)
 }

而是初始化对象。如何使它返回null?因为这会使ModelState无效

提交表单返回对象的初始化而不是空mvc c#

我相信模型绑定器初始化对象是为了检查它们的ModelState,尽管我可能弄错了。

你可以做的一个快速修复是在if块中添加一个隐藏字段,并在你的操作中检查它。

@if (Model.StepNumber == (int)Booking_Steps.BookingDetails)
{
  <input type="hidden" name="partialRenderedFlag" value="true" />
  @Html.Partial("_Booking_Details", Model.BookingDetails)
}
控制器动作:

public async Task<ActionResult> Create(BookingViewModel bookingview, BookingDetailsViewModel bookingdetails, bool partialRenderedFlag = false)
{
  if (partialRenderedFlag)
    // you know you rendered partial
}