Передайте несколько объектов для просмотра через контроллер - PullRequest
0 голосов
/ 23 марта 2012

Я занимаюсь разработкой веб-приложения asp.net mvc, в котором я хочу отправить 2 объекта для просмотра через контроллер. Теперь я посылаю только один объект для просмотра через контроллер

return View(repository.func(id));

и в виду я получаю

<% var data = Model.First %>

Но теперь я запутался, как отправить 2 объекта и как его получить.

Ответы [ 4 ]

4 голосов
/ 23 марта 2012

Отличный повод (научиться) использовать ViewModel:

class MyViewModel { ... }


// and in the Action:
var view = new MyViewModel();
view.First = repository.func(id) ;
view.Second  = ....;    
return View(view);
1 голос
/ 23 марта 2012

Вы можете использовать ViewBag (лично мне не нравится этот подход) или создать класс, который будет содержать оба значения и использовать его для модели для вашего представления

0 голосов
/ 23 марта 2012

Просто небольшая проработка ответа Хенка

class MyViewModel {
    TMyEntityType1 First { get; set; }
    IQueryable<TMyEntityType2> Second { get; set; }
}

А затем в действии вы собираете 2 набора данных и размещаете их в экземпляре MyViewModel

var viewModel = new MyViewModel();
viewModel.First = repository.func(id);
viewModel.Second  = repository.containing("?");    
return View(viewModel);

По вашему мнению, вы можете изменить его на:

<% var dataFirst = Model.First; 
   var dataSecond = Model.Second;%>

Где Model теперь имеет тип MyViewModel, а не тип возврата repository.func (id)

0 голосов
/ 23 марта 2012

Я предполагаю, что ваш взгляд строго типизирован и имеет тот же тип, что и тот, из которого вы возвращаетесь:

repository.func(id)

Допустим, объект 'Foo'

Предполагается, что выиспользуется строго типизированное представление:

@model Foo

Вы можете изменить это на:

@model IEnumerable<Foo>

Тогда ваше представление будет строго типизировано в коллекцию (IEnumerable) Foo

и, по вашему мнению, вы можете сделать:

foreach(var foo in Model)
{
    //Do stuff
}

Естественно, ваш метод репозитория должен будет возвращать коллекцию объектов (через что-то, что реализует IEnumerable - List <>, например)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...