复杂的强类型对象+默认的ModelBinder

时间:2010-02-10 04:18:39

标签: asp.net-mvc modelbinders

我有以下复杂模型: 类别 - 有 - >列表中有 - >列表

我正在尝试创建一个创建操作,我可以拉出所有现有类别,并为每个类别列出一个列表,包括子项。例如: -Cat1 - NewItemGroup1 --- NewItem1 --- NewItem2 --- NewItem3 --- NewItem4

-Cat2 - NewItemGroup2 --- NewItem1 --- NewItem2 --- NewItem3 --- NewItem4

我的问题,我可以使用默认的模型绑定器来实现吗?或者我应该使用其他东西?那将增加多少工作:)?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用默认的模型绑定器执行复杂的对象和列表,只需索引发布的数据,以便正确识别它。

Phil Haack的文章Model Binding to a List涵盖了你需要做的事情。简而言之,只需使用隐藏字段索引列表字段,如下所示:

<input type="hidden" name="products.Index" value="0" />
<input type="text" name="products[0].Name" value="Beer" />
<input type="text" name="products[0].Price" value="7.32" />

指定的products.Index字段描述了“产品”列表中存在索引“0”。 Name和Price字段是索引0处对象的属性。请注意,索引不必是整数,因此如果您绑定到字典,则可以使用任何内容作为索引值。