2013-04-05 2 views
5

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

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

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

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

ответ

7

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

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> 
} 
+0

Ницца, мне она нравится. Тем не менее, используйте строгий «Список», а не «IEnumerable», поскольку цикл может вызывать множественные перечисления. Измените это, и вы получили мой +1 :) – mattytommo

+0

Оба действительно, держите его согласованным :) – mattytommo

+2

@mattytommo done :) –

Смежные вопросы