Asp.net mvc 3 Can';t绑定模型到控制器,MVC3
我有2个视图和1个EditorTemplate 第一个视图是Cart.cshtml视图,该视图有一个模型(CartModel) 在此视图中,使用以下命令调用第二个视图:Asp.net mvc 3 Can';t绑定模型到控制器,MVC3,asp.net-mvc-3,Asp.net Mvc 3,我有2个视图和1个EditorTemplate 第一个视图是Cart.cshtml视图,该视图有一个模型(CartModel) 在此视图中,使用以下命令调用第二个视图: @Html.Partial("OrderSummary", Model.CartSummaryModel) 在OrderSummary.cshtml视图中,我有以下内容 @Html.EditorFor(m => m.OrderItems) 在EditorTemplate(称为OrderItemModel)中 问题在于,
@Html.Partial("OrderSummary", Model.CartSummaryModel)
在OrderSummary.cshtml视图中,我有以下内容
@Html.EditorFor(m => m.OrderItems)
在EditorTemplate(称为OrderItemModel)中
问题在于,当在最顶端的视图(Cart.cshtml)上导致post时,模型在控制器中没有绑定,“CartSummaryModel”为空。切换到FormCollection时,有两个键:
OrderItems[0].SelectedQuantity
OrderItems[1].SelectedQuantity
如何将表单集合数据绑定到控制器的操作方法?这是因为部分:
@Html.Partial("OrderSummary", Model.CartSummaryModel)
在这里,您失去了输入字段名称中所需的CartSummaryModel
前缀。因此,使用编辑器模板而不是使用分部
继续并将此OrderSummary.cshtml
移动到EditorTemplates/OrderSummary.cshtml
,然后在视图中替换:
@Html.Partial("OrderSummary", Model.CartSummaryModel)
与:
如果CartSummaryModel
属性的类型是OrderSummary
,您甚至不需要指定编辑器模板的名称,因为ASP.NET MVC将按惯例找到它:
@Html.EditorFor(x => x.CartSummaryModel)
现在可以开始了,您将看到发送到服务器的正确密钥:
CartSummaryModel.OrderItems[0].SelectedQuantity
CartSummaryModel.OrderItems[1].SelectedQuantity
尝试用
@Html.EditorFor(m=>m.SelectedQuantity,Model.QuantityList)替换@Html.EditorFor(m=>m.SelectedQuantity,Model.QuantityList)
@Html.EditorFor(x => x.CartSummaryModel)
CartSummaryModel.OrderItems[0].SelectedQuantity
CartSummaryModel.OrderItems[1].SelectedQuantity