Модель c # mvc vs viewbag

Предположим, у вас есть список людей A и список людей B на странице. И эти два являются отдельными классами в L2S, представляющими две разные таблицы. Следовательно, вы не можете передать одну модель следующим образом:

...
@model PeopleA
...
@foreach(var peopleA in Model.People) ...

@foreach(var peopleB in //what?)

Соответственно, я думаю, у меня есть три варианта, которым нужно следовать.

  • Первый - разделить страницу на частичные представления, чтобы я мог передать модель через помощник RenderAction . Поскольку я буду использовать эти частичные представления только один раз, этот вариант мне не кажется привлекательным.
  • Второй вариант - использовать ViewBags, чего я не хочу, так как я предпочитаю строго типизированные модели.
  • Наконец, последний вариант, который я собирался использовать, но хотел спросить перед тем, как это сделать, - это создайте модель следующего вида:

ModelMyPage.cs

public List<PeopleA> peopleA { get; set; }
public List<PeopleB> peopleB { get; set; }

MyController.cs

... 
ModelMyPage m = new ModelMyPage();
m.peopleA = // query
m.peopleB = // another query
return(m);

И вы поняли идею. Это действительный способ выполнить мою задачу или есть лучший способ С # делать то, что я хочу?

11
задан tereško 15 March 2013 в 05:10
поделиться