2013-04-05 28 views
5

Mühendisler masasının, bir proje tablosunun ve bir element tablosunun bulunduğu küçük bir proje üzerinde çalışıyorum. Mühendislere birden çok eleman verilir ve elemanlar birden fazla projeye sahip olabilir. Bir mühendisin bütün parçalarını ayrı ayrı göstermeyi nasıl düşündüğümü merak ediyordum.ASP.NET MVC 4, tek bir görünümde birden fazla model mi?

Şu anda, bir mühendis ile bir öğe ilişkilendiren bir tablo var. Bunun gibi bir şey daha:

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

İki tabloyu birbirine bağlamanın bir yolu var. MVC kullanarak bu tabloları birbirine bağlama konusunda biraz daha fazla şey öğrenmek beni doğru yöne itebilir mi? Zaten bu temsil etmek üzere bir görünüm modeli yoksa

cevap

7

, sadece bir oluşturun:

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

kontrolörü

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

yılında Ve görünümünde görünüm bir dizi model doldurma sadece Görünüm modelleri koleksiyonu kullanacağınızı belirtin:

@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

Güzel, hoşuma gitti. Bir şey olsa da, looping birden fazla numaraya neden olabilir, güçlü "Tür" ve "IEnumerable" değil kullanın. Bunu değiştirin ve benim +1'imi aldım :) – mattytommo

+0

Her ikisi de, tutarlı kalsın :) – mattytommo

+2

@mattytommo done –

İlgili konular