ASP.NET MVC - 以一种形式处理多个对象

Jas*_*son 5 asp.net-mvc

我有一个我坚持的场景 - 我有一个域对象,附加了一个对象集合.像这样的东西:

public class Person
{
   public string Name { get; set; }
   public IList<PhoneNumber> PhoneNumbers {get; set; }
   public IList<Address> Addresses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

客户想要的UI有一个用于添加和编辑的输入表单.用户可以为每个人输入0到多个电话/地址.如何处理将值集合发布回控制器?

我可以想到几种方法,但它们都显得蛮力而且不是很优雅.是否有处理此类问题的最佳做法?

Dev*_*ris 0

过去我为此使用了railsy 约定。

<input name="Parent[childObjectType][serial_number]" type="textbox" value="" />
Run Code Online (Sandbox Code Playgroud)

所以对于你的情况来说

<input name="Person[PhoneNumber][1]" type="TextBox" value="555-1212" />
<input name="Person[PhoneNumber][2]" type="TextBox" value="555-555-1212" />
Run Code Online (Sandbox Code Playgroud)

您可以增加序列号并在 javascript 中复制该元素以获取多个元素,并在操作中使用 formCollection,这将为您提供获取这些元素的方法。

mvc 团队默认使用 ModelBinder 和点语法来执行此操作。然而,这使得 jquery 和其他 javascript 框架陷入困境。