2012-07-16 19 views
8

देखने के लिए एक से अधिक मॉडल भेजना मेरे पास दो मॉडल वर्ग हैं, प्रत्येक डेटाबेस में एक तालिका है। एक मॉडल को 'कपड़े' और अन्य 'शूज़' कहा जाता है।एमवीसी 4

मैं एक ही रेजर व्यू में प्रत्येक तालिका की सामग्री प्रदर्शित करना चाहता हूं, लेकिन एमवीसी केवल मुझे एक मॉडल को देखने के लिए भेज रहा है।

@model IEnumerable<Test.Models.Clothes> 

क्या रेज़र दृश्य में एक से अधिक मॉडल भेजने का कोई तरीका है?

यदि नहीं, तो किसी अन्य मॉडल की सामग्री को प्रदर्शित करने का सामान्य तरीका क्या है जिसे पहले से ही एक और मॉडल पास कर दिया गया है। सलाह के लिए धन्यवाद।

उत्तर

11

या तो एक दृश्य मॉडल वर्ग बनाएं जिसमें कक्षा दोनों की वस्तु है। फिर यह सुरक्षित होगा।

public class ViewModelForDisplay 
{ 
     public Clothes Clothes {get; set;} 
     public Shoes Shoes {get; set;} 
} 

//on Controller 
Clothes objClothes = GetClothes(); 
Shoes objShoes = GetShoes(); 

ViewModelForDisplay objViewModel = new ViewModelForDisplay() {Clothes = objClothes, Shoes= objShoes } 

ViewBag.It का उपयोग करके यह करने के लिए अन्य आसान तरीका गतिशील विशेषता यह है कि सी # 4. करने के लिए जोड़ा गया है यह गतिशील गुण को जोड़ता को एक वस्तु की अनुमति देता है का उपयोग करता है। इसके अलावा टाइप

ViewBag.Shoes= objShoes ; 
ViewBag.Clothes= objClothes ; 

आप HTML को ऑब्जेक्ट्स पास करने के लिए व्यूडेटा का भी उपयोग कर सकते हैं। यह सुरक्षित प्रकार नहीं होगा। यह कास्टिंग की आवश्यकता है

ViewData["Clothes "] = objClothes ; 
ViewData["Shoes "] = objShoes ; 
+3

देखें मॉडल पसंदीदा तरीका है। – RickAndMSFT

+1

इसके अलावा, अपने मॉडल (डेटाबेस ऑब्जेक्ट) को देखने के लिए पास करना अच्छा नहीं है। केवल आवश्यक फ़ील्ड के साथ व्यूमोडेल बनाएं –

+0

रीप्ले और कोड नमूना देने के लिए धन्यवाद, नियंत्रक पर विस्तार करने का कोई मौका? यह मेरे लिए काम नहीं करता है। – user1448260

1

अपनी खुद की कक्षा उर्फ ​​मॉडल देखें और इसे दोनों मॉडलों से बना लें।