2013-05-04 106 views
0

我在將模型從視圖上的窗體發送到控制器時出現問題。主類我有它的數據,但子類失去了它們的值。MVC4將模型傳遞給控制器​​ - 某些模型爲空

我有一個主流報價類是這樣的:

public class Quotation 
{ 
    public string QuotationID { get; set; } 
    public TaxiPartner taxiPartner { get; set; } 
    public TaxiCompany taxiCompany { get; set; } 
    public int maxNumberOfSeats { get; set; } 
    public int maxNumberOfBags { get; set; } 
    public double price { get; set; } 
} 

再比如說我有TaxiPartner類:

public class TaxiPartner 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public List<Address> Addresses { get; set; } 
    public bool supportsPasswordReset { get; set; } 
    public bool supportsValidatebysms { get; set; } 
} 

這裏是我的看法形式

@if (Model.listOfQuotations.Count > 0) 
{ 
<h3>You can book online with:</h3> 
foreach (var item in Model.listOfQuotations) 
{ 
    using (Html.BeginForm("BookingPage1", "SearchResults", FormMethod.Post)) 
    {  

<div class="well"> 
    <div> 
     <h4>@item.taxiCompany.Name</h4> 
    </div> 
    <div style="float: right;"> 
     <h2>@string.Format("{0:C}", item.price)</h2> 
    </div> 
    <div> 
     <b>Product Type:</b> 
     <img style="width: 15px;" src="~/Content/images/[email protected]" /> 
     (1 = Best Value, 2 = Executive, 3 = Minibus) 
    </div> 
    <div><b>Services:</b> @item.taxiCompany.services (0 = Outdoor pickup, 1 = Meet & greet pickup)</div> 
    <div><b>Maximum Number of Seats:</b> @item.maxNumberOfSeats <b>Maximum Number of Bags:</b> @item.maxNumberOfBags</div> 
    <div>@Html.ActionLink("Book Now", "BookingPage1", item, new { @class = "btn btn-success" })</div> 
</div> 
    } 
} 

}

然後我在我的控制器中執行以下操作:

[HttpPost] 
    public ActionResult BookingPage1(Quotation chosenQuote) 
    { 
     return View(); 
    } 

當我的控制器動作叫我可以看到QuotationID,maxNumberOfSeats,maxNumberOfBags和價格的值,但載於taxiPartner和taxiCompany這些值都空值?

我調試過了,視圖中「item」的值確實包含了我需要的值,但是一旦它到達控制器,它們就消失了。

任何人都可以看到我做錯了,請嗎?

+0

你似乎有嵌套視圖模型,以正確呈現它們並讓它們張貼您需要使用EditorFor() – 2013-05-04 15:30:18

+0

請添加您的表單代碼...可能你沒有你的表單中的所有字段和這就是爲什麼你沒有看到他們發佈。 – Romias 2013-05-04 15:30:27

+0

ive添加了更多代碼。希望它有幫助?我仍然無法解決@CodeIgnoto romias – 2013-05-04 18:38:39

回答

1

僅分配給將在控制器

0

僅僅顯示值可用的輸入類型的示範田是不夠的,它被傳遞迴。如果您有沒有輸入一個值,你應該使用一個隱藏的價值:

@Html.HiddenFor(x=>x.TaxiPartner.Name) 

此外,有些東西你可能要考慮一下:如果你有一大堆的屬性是不在此視圖中使用/顯示時,您可能需要考慮創建一個單獨的視圖模型,該視圖模型只保存該視圖所需的值,而不是將大量隱藏的輸入字段傳遞給不需要的值。

相關問題