asp.net-mvc - 复杂的强类型对象 + 默认 ModelBinder

标签 asp.net-mvc modelbinders

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

我正在尝试执行一个创建操作,在其中我可以拉出所有现有类别,并为每个类别插入一个列表,包括子项目。例如: -Cat1 -- 新项目组1 --- 新项目1 --- 新项目2 --- 新项目3 --- 新项目4

-Cat2 -- 新项目组2 --- 新项目1 --- 新项目2 --- 新项目3 --- 新项目4

我的问题是,我可以使用默认的模型绑定(bind)器来实现此目的吗?或者我应该使用其他东西?这会增加多少工作量:)?

谢谢!

最佳答案

您可以使用默认的模型绑定(bind)器来处理复杂的对象和列表,您只需为您发布的数据建立索引,以便它可以正确地找出它。

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 处对象的属性。请注意,索引不必是整数,因此如果您要绑定(bind)到字典,则可以使用任何内容作为索引值。

关于asp.net-mvc - 复杂的强类型对象 + 默认 ModelBinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234382/

相关文章:

asp.net-mvc - 接受逗号和点作为小数分隔符

ajax - 局部 View 不渲染 MVC Razor

c# - 如何在 MVC 5 项目中使用 Json.NET 进行 JSON 模型绑定(bind)?

c# - 我可以创建一个只接受 URL 中的大写字母的 ASP MVC 路由吗?

c# - 找不到类型或命名空间名称 'TwilioRestClient'

asp.net-mvc - MVC3 ModelBinding 到带有索引间隙回发的集合

asp.net-mvc - Asp.net MVC 中的自定义 DateTime 模型绑定(bind)器

asp.net-mvc - 从自定义模型绑定(bind)器的controllerContext中获取FormCollection

c# - 可空日期时间的日期选择器绑定(bind)不正确

c# - 需要对使用 for 循环插入的复选框进行验证