2015-10-07 16 views
0
[HttpPost]  
public async Task<ActionResult> Create(BookingViewModel bookingview, BookingDetailsViewModel bookingdetails) 

我有一個問題,當我提交表單我期待的是,bookingdetails爲空,如果我沒有顯示其PartialView與之相關的提交表單返回對象的初始化,而不是空MVC C#

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

而是它初始化對象。如何使它返回null?因爲這使ModelState無效。

+1

的'DefaultModelBinder'將初始化你的方法的所有參數的默認值如果爲他們提供任何值。 –

回答

0

我相信模型綁定器會初始化對象來檢查他們的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 
}