ASP.NET MVC 4, несколько моделей в одном представлении?

Я работаю над небольшим проектом, в котором у нас есть таблица инженеров, таблица проектов и таблица элементов. инженерам назначается несколько элементов, а элементы могут иметь несколько проектов. Мне просто интересно, как я буду показывать все элементы, которыми обладает инженер.

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

   [Engineer Elements]
[Engineer ID][Element ID]
   [1]           [2]
   [1]           [4]
   [2]           [2]
   [2]           [8]

Итак, у меня есть способ связать две таблицы. Мог бы подтолкнуть меня в правильном направлении, узнав немного больше о соединении этих таблиц вместе с помощью MVC?

Ответ 1

Если у вас еще нет модели представления для ее представления, просто создайте ее:

public class MyViewModel
{
    public Engineer Engineer { get; set; }
    public List<Element> Elements { get; set; }
}

Заполните набор моделей представлений в контроллере

public ActionResult MyAction()
{
    var viewModels = 
        (from e in db.Engineers
         select new MyViewModel
         {
             Engineer = e,
             Elements = e.Elements,
         })
        .ToList();
    return View(viewModels);
}

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

@model List<MyViewModel>
@foreach(var vm in Model)
{
    <h1>Projects for engineer: @vm.Engineer.Name</ha>
    <ul>
    @foreach(var ele in vm.Elements)
    {
        <li>@ele.Name</li>
    }
    </ul>
}