[英]Can't bind model to Controller, MVC3
我有2個視圖和1個EditorTemplate
第一個視圖是Cart.cshtml視圖,並且該視圖具有模型(CartModel)。在此視圖內,可以使用以下命令調用第二個視圖:
@Html.Partial("OrderSummary", Model.CartSummaryModel)
在OrderSummary.cshtml視圖內部,我有這個
@Html.EditorFor(m => m.OrderItems)
在EditorTemplate(稱為OrderItemModel)內部,
@Html.DropDownListFor(m => m.SelectedQuantity, Model.QuantityList)
問題是,當在最高視圖(Cart.cshtml)上發布帖子時,模型未在控制器中綁定,因此“ CartSummaryModel”為null。 交換到FormCollection時,有兩個鍵:
OrderItems[0].SelectedQuantity
OrderItems[1].SelectedQuantity
如何將表單收集數據綁定到Controller的action方法?
這是由於部分原因:
@Html.Partial("OrderSummary", Model.CartSummaryModel)
在這里,您失去了輸入字段名稱中所需的CartSummaryModel
前綴。 因此,不要使用局部變量,而使用編輯器模板。
繼續並將此OrderSummary.cshtml
移動到EditorTemplates/OrderSummary.cshtml
,然后在視圖內部替換:
@Html.Partial("OrderSummary", Model.CartSummaryModel)
與:
@Html.EditorFor(x => x.CartSummaryModel, "OrderSummary")
如果類型CartSummaryModel
屬性是OrderSummary
你甚至不需要指定編輯模板的名稱為ASP.NET MVC將按照約定找到它:
@Html.EditorFor(x => x.CartSummaryModel)
現在您可以使用了,您將看到發送到服務器的正確密鑰:
CartSummaryModel.OrderItems[0].SelectedQuantity
CartSummaryModel.OrderItems[1].SelectedQuantity
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.