2011-11-30 13 views
6

का भारी उपयोग मैं अपने एमवीसी अनुप्रयोग में व्यूबैग का भारी उपयोग करता हूं, क्या यह बुरा अभ्यास माना जाता है? मुझे यकीन है कि व्यूमोडेल बनाने में समय बिताना है या नहीं (हालांकि मैंने सोचा था कि एमवीसी के बजाय एमवीवीएम के लिए अधिक अनुकूल था) या व्यूबैग का उपयोग जारी रखना जारी रखें। इसके लिए और इसके खिलाफ तर्क क्या हैं? उदाहरण नियंत्रक विधि यह मॉडल (आम तौर पर एक सरल डोमेन इकाई) के साथ ही ViewBag के लिए निम्न कॉल है वापसी होगी:व्यूबैग

  ViewBag.TotalItems = data.Count(); 
     ViewBag.FilteredItems = gridFilters; 
     ViewBag.Action = "Events"; 
     ViewBag.Area = "People"; 
     ViewBag.EntityID = person.EntityID; 
     ViewBag.OrganisationID = ID; 
     ViewBag.Name = string.Format("{0} {1}", person.FirstName, person.LastName); 
     ViewBag.IsEnabled = person.IsEnabled; 
     ViewBag.EntityID = person.EntityID; 
     ViewBag.Favourited = users.IsOnUserFavourites(person.EntityID); 

     ViewBag.Columns = userColumns; 

     ViewBag.Title = "Person : " + string.Format("{0} {1}", person.FirstName, person.LastName) + " - Events"; 

उत्तर

9

इन जैसे प्रश्न आमतौर पर बाड़ के दोनों किनारों से उत्तर प्राप्त करेंगे। बहुत से लोग महसूस करते हैं कि इस तरह व्यूबैग का उपयोग करना एक खराब डिजाइन है (स्वयं शामिल)। यह आपके नियंत्रकों को कम परीक्षण योग्य बनाता है। आपके विचार दृढ़ता से टाइप नहीं किए गए हैं, आदि

आमतौर पर ViewModel का उपयोग करने के लिए यह एक अच्छा अभ्यास है। अपना मॉडल एक डोमेन मॉडल होने के बजाय, एक मॉडल बनाएं जो आपके द्वारा प्रदर्शित किए जा रहे दृश्य के लिए विशिष्ट है। इस तरह के विशिष्ट दृश्य के लिए आपको जिस चीज की आवश्यकता है उसके अनुरूप यह 100% कस्टम हो सकता है। आप पाएंगे कि एक बार ऐसा करने के बाद आपको वास्तव में ViewBag का उपयोग करने की ज़रूरत नहीं है। यह कभी-कभी बहुत अधिक कोड बना सकता है (प्रति दृश्य एक दृश्य मॉडल) लेकिन कोड बहुत सरल है और एक दृश्य में बदलाव करने से कोई भी अन्य नहीं टूट जाएगा।

+0

धन्यवाद, यह वही था जो मैं खोज रहा था। – Paul

+0

फिर, याद रखें कि इस तरह के प्रश्न बहुत ही व्यक्तिपरक हैं। आपके लिए क्या काम करता है दूसरों के लिए काम नहीं कर सकता है और दूसरों के लिए क्या काम आपके लिए काम नहीं कर सकता है। मैं सिर्फ अपने दृष्टिकोण से जवाब दे रहा हूं :) – Dismissile

0

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

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