Asp.net mvc 2 Asp.NETMVC2:视图模型在回发时是如何绑定回模型的?

Asp.net mvc 2 Asp.NETMVC2:视图模型在回发时是如何绑定回模型的?,asp.net-mvc-2,model-binding,Asp.net Mvc 2,Model Binding,很抱歉这么长,但一张图片抵得上1000字: 在ASP.NET MVC 2中,输入表单字段“name”属性必须完全包含下面的语法,您可以使用这些语法在C#中引用对象,以便在回发时将其绑定回对象。也就是说,如果您有一个如下所示的对象,其中包含具有多个订单行的多个订单,那么这些名称的外观和工作方式将与此类似(区分大小写): 这是有效的: Order[0].id Order[0].orderDate Order[0].Customer.name Order[0].Customer.Address Ord

很抱歉这么长,但一张图片抵得上1000字:

在ASP.NET MVC 2中,输入表单字段“name”属性必须完全包含下面的语法,您可以使用这些语法在C#中引用对象,以便在回发时将其绑定回对象。也就是说,如果您有一个如下所示的对象,其中包含具有多个订单行的多个订单,那么这些名称的外观和工作方式将与此类似(区分大小写):

这是有效的:

Order[0].id
Order[0].orderDate
Order[0].Customer.name
Order[0].Customer.Address
Order[0].OrderLine[0].itemID       // first order line
Order[0].OrderLine[0].description
Order[0].OrderLine[0].qty
Order[0].OrderLine[0].price

Order[0].OrderLine[1].itemID      // second order line, same names
Order[0].OrderLine[1].description
Order[0].OrderLine[1].qty
Order[0].OrderLine[1].price
Order.id                          // Duplicate names should enumerate at 0 .. N
Order.orderDate
Order.Customer.name
Order.Customer.Address
Order.OrderLine.itemID            // And likewise for nested properties?
Order.OrderLine.description
Order.OrderLine.qty
Order.OrderLine.price

Order.OrderLine.itemID
Order.OrderLine.description
Order.OrderLine.qty
Order.OrderLine.price
但是,我们希望在客户端浏览器中添加订单行和删除订单行。显然,索引必须从零开始,并包含从N到N的每个连续索引号

黑带忍者菲尔·哈克(black belt ninja Phil Haack)的博客文章解释了如何删除[0]索引,拥有重复的名称,并让MVC用[0]符号自动枚举重复的名称。但是,我无法使用嵌套对象将其绑定回:

此操作失败:

Order[0].id
Order[0].orderDate
Order[0].Customer.name
Order[0].Customer.Address
Order[0].OrderLine[0].itemID       // first order line
Order[0].OrderLine[0].description
Order[0].OrderLine[0].qty
Order[0].OrderLine[0].price

Order[0].OrderLine[1].itemID      // second order line, same names
Order[0].OrderLine[1].description
Order[0].OrderLine[1].qty
Order[0].OrderLine[1].price
Order.id                          // Duplicate names should enumerate at 0 .. N
Order.orderDate
Order.Customer.name
Order.Customer.Address
Order.OrderLine.itemID            // And likewise for nested properties?
Order.OrderLine.description
Order.OrderLine.qty
Order.OrderLine.price

Order.OrderLine.itemID
Order.OrderLine.description
Order.OrderLine.qty
Order.OrderLine.price
我还没有找到任何关于如何在post上绑定嵌套ViewModels的建议关于使用ILists进行嵌套绑定所需的确切名称,是否有指向现有代码示例或严格示例的链接?

Steve Sanderson有做这类事情的代码,但我们似乎无法将其绑定回嵌套对象。任何不具有[0]..[n]且编号连续的对象都会从返回对象中删除


有什么想法吗?

我们通过以下方法找到了解决办法:

 Html.EditorFor(m => m, "ViewNameToUse", "FieldPrefix")

其中FieldPrefix是“对象[0]”。这很难算是理想的,但它确实工作得很好。它简单而优雅。

只是一个注释,在我们的测试代码中,顺序有多个顺序(顺序[0],顺序[1])。我缩短了列表以作为示例。