Заполните 2 или более таблиц в ASP MVC - PullRequest
1 голос
/ 14 апреля 2009

Я ищу способ заполнить более 1 таблицы в MVC, потому что метод позволяет мне только вернуть One ModelView, или я не знаю, как вернуть больше. Нужно ли строить таблицу в контроллере, сохранять в ViewData и отображать viewData на странице?

Редактировать: Извините, я думаю, что не выразил идею. Дело в том, что я хочу заполнить 2 или более таблиц данных на странице.

Например, если у меня есть клиент, а у этого клиента 5 контактов и 5 адресов, я хочу отобразить информацию о клиенте и 2 таблицы с контактами и адресами.

for each p in modelview
{
"<td>" + p.Name + "</td>"
}


for each p2 in modelview2
{
"<td>" + p2.Product + "</td>"
}

Ответы [ 2 ]

2 голосов
/ 14 апреля 2009

ViewData - это словарь; Вы можете хранить там несколько предметов, просто через:

ViewData["foo"] -= ...
ViewData["bar"] -= ...

Затем вы можете получить их (отдельно) в виде. Другой подход заключается в объявлении типа, который инкапсулирует обоих свойств, и использовании экземпляра этого типа в качестве модели (и типизированного представления). Лично я предпочитаю простой подход ключ / каст.

0 голосов
/ 14 апреля 2009

Вы можете вернуть более одной модели, но для этого потребуется составная модель для представления и использование префиксов при привязке параметра контроллера.

Скажем, у вас есть модель просмотра, которая:

public class VM
{
   public FooClass Foo { get; set; }
   public BarClass Bar { get; set; }
}

Тогда в вашем контроллере у вас будет

public ActionResult MyAction( [Bind(Prefix="Foo")]FooClass foo,
                             [Bind(Prefix="Bar")]BarClass bar )
{
   ...
}

А по вашему мнению вы бы использовали:

<%= Html.TextBox( "Foo.Value" ) %>
<%= Html.TextBox( "Bar.Name" ) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...