Используйте NameValueDeserializer MvcContrib, чтобы упростить его. Предположим, что ваша страница происходит от ViewPage . Вы можете сделать это:
<%= Html.TextBox("Address[0].Line1", ViewData.Model.Address[0].Line1)%>
<%= Html.TextBox("Address[1].Line1", ViewData.Model.Address[1].Line1)%>
А это:
public ActionResult Save([Deserialize]Customer customer)
И клиент будет десериализован из сообщения формы с заполненным набором адресов. Ваши индексы не должны быть в последовательности - это поддерживает случаи, когда вы хотите удалить строки на стороне клиента до того, как публикация произойдет.
В случае, если вы десериализуете что-то из словаря данных представления (вместо модели), то синтаксис будет выглядеть как [Deserialize ("customer")], где префиксом является customer.
Вы можете найти это сообщение в блоге интересным и актуальным.