[英]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.