繁体   English   中英

无法将模型绑定到Controller,MVC3

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM