Привязка родительской модели ASP.Net MVC3

У меня есть частичный шаблон, который использует объект пользователя в качестве модели. У пользователя есть коллекция Аккаунтов. На этом частичном шаблоне у меня есть цикл следующим образом. Частичный шаблон _Account привязан к классу Account

  @foreach (var item in Model.Accounts)
            { 
                <tr>
                    <td colspan="6">
                        <div>
                            @Html.Partial("_Account", item)
                        </div>
                    </td>
                </tr>

            }

В моем методе контроллера я изначально пытался

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UserDetails(User user, string actionType)

Но коллекция User.Accounts пуста. Тогда я попробовал это. Тем не менее коллекция учетных записей пуста.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UserDetails(User user,  
                             [Bind(Prefix="User.Accounts")]
                             FixupCollection<Account> Accounts, 
                             string actionType)

Могу ли я использовать реализацию Modelbinder по умолчанию для достижения этого или мне нужно сделать что-то другое?

2 ответа

Решение

Да, вы можете использовать связыватель модели по умолчанию. Вам просто нужно правильно назвать свои поля. Так что вам нужен ваш цикл для вывода чего-то вроде этого:

...
<input type="text" name="user.Accounts[0].SomeTextField" />
<input type="text" name="user.Accounts[0].SomeOtherTextField" />
...
<input type="text" name="user.Accounts[1].SomeTextField" />
<input type="text" name="user.Accounts[1].SomeOtherTextField" />
...

Если вам нужно добавить / удалить учетные записи, жестко закодированные индексы становятся немного сложнее. Вы можете переназначить имена, используя JavaScript перед постбэком. Но это все возможно. Этот вопрос дает более подробную информацию о привязке модели:

ASP.NET MVC: привязка сложного типа к выбору

Используйте шаблоны редактора вместо частичного представления - не нужно жестко кодировать ваши индексы, так как шаблон будет автоматически индексировать все ваши объекты правильно, даже когда вы добавляете и удаляете учетные записи. Смотрите мой ответ на этот вопрос:

Передать значения из нескольких частичных представлений

Небольшая статья о редакторе шаблонов здесь:

codenodes.wordpress.com - Шаблоны редактора MVC3

Другие вопросы по тегам