2013-04-05 11 views
5

मैं एक छोटी परियोजना पर काम कर रहा हूं जिसमें हमारे पास इंजीनियरों की एक मेज है, परियोजनाओं की एक तालिका है, और तत्वों की एक तालिका है। इंजीनियरों को कई तत्व असाइन किए जाते हैं, और तत्वों में कई परियोजनाएं हो सकती हैं। मैं बस सोच रहा था कि मैं एक इंजीनियर के अलग-अलग तत्वों को दिखाने के बारे में कैसे जाऊंगा।एएसपी.नेट एमवीसी 4, एक मॉडल में कई मॉडल?

वर्तमान में, मेरे पास एक सारणी बनाई गई है जो एक इंजीनियर को तत्व के साथ जोड़ती है। यह इस तरह थोड़ा दिखता है:

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

तो मेरे पास दो तालिकाओं को जोड़ने का कोई तरीका है। एमवीसी का उपयोग करके इन तालिकाओं को एक साथ जोड़ने पर थोड़ा और सीखने के लिए मुझे सही दिशा में धक्का दे सकता है?

उत्तर

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

अच्छा, मुझे यह पसंद है। हालांकि, एक चीज मजबूत टाइप की गई 'सूची' का उपयोग करें, न कि' आईन्यूमेरेबल ', क्योंकि लूपिंग कई समीकरणों का कारण बन सकती है। इसे बदलें और आपको मेरा +1 मिला :) – mattytommo

+0

वास्तव में, इसे लगातार रखें :) – mattytommo

+2

@mattytommo किया :) –

संबंधित मुद्दे