【问题标题】:Complex Strongly-Typed Object + Default ModelBinder复杂的强类型对象 + 默认 ModelBinder
【发布时间】:2010-02-10 04:18:39
【问题描述】:

我有以下复杂模型: Category - has -> List which has -> List

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

-Cat2 -- NewItemGroup2 --- 新项目1 --- 新项目2 --- 新物品3 --- 新项目4

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

谢谢!

【问题讨论】:

    标签: asp.net-mvc modelbinders


    【解决方案1】:

    你可以用默认的模型绑定器来做复杂的对象和列表,你只需要索引你发布的数据,这样它就可以正确地找出它。

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

    【讨论】:

    • 我以前见过这个解决方案。但就我而言,它是另一个列表中的一个列表。那么,我想知道我是否真的可以依赖默认的模型绑定器?
    • 是的,你可以。你可以嵌套你想要的任何深度的属性名称。可能是 Category1[0].NewItemGroup1[0] 等等。
    • 这真的很有帮助。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多