2013-04-05 19 views
5

私はエンジニアのテーブル、プロジェクトのテーブル、要素のテーブルを持っている小さなプロジェクトに取り組んでいます。エンジニアには複数の要素が割り当てられ、要素には複数のプロジェクトが含まれます。私は、エンジニアが離れているすべての要素をどのように表示するのかと思っていました。ASP.NET MVC 4、複数のモデルを1つのビューで表示できますか?

現在、エンジニアを要素に関連付けるテーブルが作成されています。これはちょっとこのように見えます:

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

私は2つのテーブルをリンクする方法があります。 MVCを使用してこれらのテーブルを一緒にリンクすることについてもう少し学ぶことで、正しい方向に私を押し込むことができますか?

答えて

7

あなたはすでに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> 
} 
+0

ニース、私はそれが好きです。しかし、ループは複数の列挙を引き起こす可能性があるので、強いタイプの 'List'ではなく' IEnumerable'を使用してください。それを変更して、私の+1を得ました:) – mattytommo

+0

本当に、それは一貫性を保ちます:) – mattytommo

+2

@mattytomm done :) –

関連する問題