Привязка родительской модели ASP.Net MVC3 - PullRequest
1 голос
/ 11 апреля 2011

У меня есть частичный шаблон, который использует объект User в качестве модели.У пользователя есть коллекция Аккаунтов.На этом частичном шаблоне у меня есть цикл следующим образом.Частичный шаблон _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 ]

4 голосов
/ 11 апреля 2011

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

...
<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: привязка сложного типа к выделенному элементу

0 голосов
/ 07 сентября 2012

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

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

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

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

...