0

我有 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”为空。交换到 FormCollection 时有 2 个键,它们是:

OrderItems[0].SelectedQuantity
OrderItems[1].SelectedQuantity

如何将表单集合数据绑定到 Controller 的操作方法?

4

1 回答 1

1

这是因为部分:

@Html.Partial("OrderSummary", Model.CartSummaryModel)

在这里,您丢失CartSummaryModel输入字段名称中所需的前缀。所以不要使用部分使用编辑器模板。

继续并将其移动OrderSummary.cshtmlEditorTemplates/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
于 2013-02-06T07:19:00.687 回答