Контроллер использует несколько моделей? - PullRequest
0 голосов
/ 29 марта 2012

До сих пор в C # MVC3 мне приходилось использовать только один контроллер, который использовал только одну модель.

Но теперь я думаю, что мне нужен доступ к двум моделям в моем контроллере.Мне интересно, разрешено ли это в шаблоне MVC?

У меня есть ProfileController.ProfileController показывает информацию профиля пользователя, очевидно.Но есть и другие данные, которые я хочу показать, например, группы, созданные пользователем.Для этого у меня также есть GroupsModel.

Как мне получить обе данные с одного контроллера?

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Как я могу получить обе данные от одного контроллера?

Используя модель представления:

public class MyViewModel
{
    public ProfileModel Profile { get; set; }
    public GroupsModel Groups { get; set; }
}

, а затем передав эту модель представления вview:

public ActionResult ShowProfile()
{
    var model = new MyViewModel();
    model.Profile = ...
    model.Groups = ...
    return View(model);   
}

И теперь ваш вид будет строго напечатан для модели вида:

@model MyViewModel

, и вы можете отобразить информацию:

@Html.DisplayFor(x => x.Profile.SomeProperty)
1 голос
/ 29 марта 2012

Предполагая, что вы не слишком много вкладываете в один вид / контроллер, почему бы не создать простую модель представления, в которой есть необходимые данные?

public class ProfileInfo
{
   public Person Person
   {
      get;
      set;
   }

   public List<Group> Groups
   {
       get;
       set;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...