2011-03-05 10 views
16

पर परिणाम लौटाएं मेरे पास दो टेबल हैं: प्रोजेक्ट्स और प्रोजेक्टडेटा और मैं शामिल होने के साथ क्वेरी निष्पादित करना चाहता हूं और परिणाम को परिणाम में प्राप्त करना चाहता हूं।linq के साथ दो तालिकाओं (शामिल) से डेटा प्राप्त करें और

ViewBag.projectsData = (from pd in db.ProjectsData 
            join p in db.Projects on pd.ProjectId equals p.ID 
            where pd.UserName == this.HttpContext.User.Identity.Name 
            orderby p.Name, p.ProjectNo 
            select new { ProjectData = pd, Project = p }); 

मैं दृश्य में क्या इस्तेमाल करना चाहिए इस डेटा निकालने के:

नियंत्रक में मैं इस कोड है। मैंने कोशिश की है कि:

@foreach (var item in ViewBag.projectsData) 
{ 
    @item.pd.UserName 
} 

लेकिन यह काम नहीं करता ...

उत्तर

39

आपके विचार में आप एक pd संपत्ति का उपयोग करने की कोशिश कर रहे हैं लेकिन इस तरह की संपत्ति मौजूद नहीं है। संपत्ति को ProjectData कहा जाता है।

यह कहा जा रहा है कि मैं दृढ़ता से आपको दृश्य मॉडल का उपयोग करने और ViewBag के बजाय दृढ़ता से टाइप किए गए विचारों का उपयोग करने की सलाह दूंगा। इस तरह आपको अपने विचार में इंटेलिजेंस भी मिलेगा जो आपको सही नाम चुनने में मदद करेगा।

तो तुम एक दृश्य के मॉडल है कि सभी जानकारी का आयोजन करेगा परिभाषित करते हुए शुरू कर सकता है आपके विचार की आवश्यकता होगी:

public class MyViewModel 
{ 
    public ProjectData ProjectData { get; set; } 
    public Project Project { get; set; } 
} 

और फिर अपने नियंत्रक कार्रवाई के अंदर इस दृश्य मॉडल को पॉप्युलेट करने और देखने के लिए पारित:

public ActionResult Index() 
{ 
    var viewModel = 
     from pd in db.ProjectsData 
     join p in db.Projects on pd.ProjectId equals p.ID 
     where pd.UserName == this.HttpContext.User.Identity.Name 
     orderby p.Name, p.ProjectNo 
     select new MyViewModel { ProjectData = pd, Project = p }; 
    return View(viewModel); 
} 

और अंत में अपने जोरदार टाइप किया दृश्य दृश्य मॉडल का उपयोग अंदर:

@model IEnumerable<AppName.Models.MyViewModel> 
@foreach (var item in Model) 
{ 
    <div>@item.ProjectData.UserName</div> 
} 
+0

धन्यवाद। इससे मुझे मॉडल देखने के लिए भी मदद मिली। ताकि मैं आंशिक दृश्य में दो तालिका डेटा दिखा सकूं और उस डेटाबेस को किसी अन्य डेटाबेस तालिका में प्रदर्शित कर सकूं। –

+0

मैंने एक ही तरीके से किया, लेकिन मुझे एक अपवाद मिला: [अवैधऑपरेशन अपवाद: शब्दकोश में पारित मॉडल आइटम प्रकार 'System.Linq.Enumerable + d__37'4 [<> f__AnonymousType7'2 [नीलामी, विजेता] , नीलामी, Int32, <> f__AnonymousType8'5 [स्ट्रिंग, डेटटाइम, दशमलव, स्ट्रिंग, स्ट्रिंग]] ', लेकिन इस शब्दकोश के लिए' System.Collections.Generic.IEnumerable'1 '[TeAwaOnlineArtworkAuction.Entities.AuctionWinner] प्रकार के मॉडल आइटम की आवश्यकता होती है। '।] – VincentZHANG

+0

मुझे एक ही त्रुटि मिलती है (@VincentZHANG) – Negar

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