2010-01-29 12 views
6

व्यूमोडेल फ़ील्ड को असाइन करते समय, डोमेन ऑब्जेक्ट्स को सीधे व्यूमोडेल ऑब्जेक्ट्स पर पास किया जाना चाहिए, जो तब निर्धारित करेगा कि डेटा कैसे पेश किया जाए, या किसी अन्य वर्ग की तरह सेवा को मॉडल से डेटा को व्यूमोडेल में असाइन करना चाहिए?क्या व्यू मॉडेल का अपना तर्क है?

भी

:

संपादित करें: वहाँ रिसीवर और प्रस्तोता में एक viewmodel विभाजित में कोई मतलब है? (अपडेट पर केवल कुछ फ़ील्ड बाध्य करने के बजाय?)

+1

व्यूमोडल्स को डीटीओ के रूप में सोचें: http: //en.wikipedia.org/wiki/Data_transfer_object – ali62b

उत्तर

5

आमतौर पर नियंत्रक कार्य व्यावसायिक वस्तुओं को लेता है और व्यूमोडेल द्वारा जो कुछ भी आवश्यक है उसे रखता है।

यदि आपके पास कोई व्यवसाय ऑब्जेक्ट है जिसमें फ़ील्ड नाम, पता, आईडी और दृश्य शामिल हैं, तो केवल नाम प्रदर्शित करना चाहिए, फिर व्यूमोडेल में केवल "फ़ील्ड" फ़ील्ड है, और नियंत्रक क्रिया इसे पॉप्युलेट करती है। व्यूमोडेल को आपके बिजनेस क्लासेस के बारे में कुछ नहीं पता होना चाहिए, इसे केवल उन चीज़ों के बारे में पता होना चाहिए जिन्हें इसे प्रदर्शित करने की आवश्यकता है।

मुख्य/केवल तर्क "डिस्प्ले लॉजिक" है, जो कि "अगर कुलअमाउंट नकारात्मक है, तो इसे सीएसएस क्लास नकारात्मक नम्बर के साथ प्रदर्शित करें" जैसी चीजें हैं।

+0

क्या रिसीवर और प्रेजेंटर में व्यूमोडेल को विभाजित करने में कोई समझ है? – zsharp

+0

मुझे एमवीपी-प्रकार पैटर्न के साथ कोई अनुभव नहीं मिला है, लेकिन मुझे बहुत आवश्यकता नहीं दिख रही है। चूंकि नियंत्रक क्रिया ViewModel बनाता है, "रिसीवर" भाग में केवल कुछ प्रकाश सत्यापन होना चाहिए, और आपके अधिकांश प्रस्तुतकर्ता तर्क वास्तविक दृश्य पृष्ठ (YourView.aspx है यदि आप डिफ़ॉल्ट वेबफॉर्म व्यू इंजन का उपयोग करते हैं)। यदि आप व्यूमोडेल क्लास के भीतर भारी सशर्त तर्क कर रहे हैं, तो शायद आपको इसे एक अलग वर्ग में निकालना चाहिए (यदि एकाधिक व्यू मॉडल्स द्वारा साझा किया गया है)। वास्तव में, स्थिति पर निर्भर करता है, लेकिन आमतौर पर ViewModels बहुत हल्के होते हैं। –

+1

लिंग के दृश्य को प्रदर्शित करने के लिए तर्क के बारे में क्या होगा। मान लें कि आप डेटाबेस में एम और एफ को सहेजते हैं, और जब दृश्य में प्रदर्शित होते हैं, तो तर्क 'अगर लिंग। एक्वाल्स ("एम") "पुरुष" लौटाता है; अन्यथा "मादा" को व्यूमोडल्स, रिपोजिटरी में रखा जाना चाहिए या जब आप इसे ViewModels पर मैप करते हैं? – Willy

3

मेरे अनुभव में मैंने मॉडल को व्यू मॉडेल में मैप करने के लिए सेवाओं का उपयोग किया है। मैं अपने व्यू मॉडल्स में तर्क नहीं डालता हूं।

एक तरफ के रूप में, मैपिंग के साथ आपकी सहायता के लिए AutoMapper को जांचने के लिए शायद यह संभव है। निश्चित रूप से दोहराव मैपिंग तर्क लिखने में कटौती में मदद करता है।

4

एसओसी के लिए यदि यह तर्क देखने के लिए संबंधित है तो वे व्यूमोडेल में या यहां तक ​​कि खुद को देखने में सुरक्षित हैं, लेकिन यदि वे व्यापार या कार्यक्रम से संबंधित हैं तो उन्हें क्रमशः मॉडल और नियंत्रक पर रखें।

+1

+1, जबकि व्यूमोडल्स अक्सर पीओसीओ हो सकते हैं, जहां आवश्यक हो वहां दृश्य तर्क जोड़ना, क्योंकि इसे नियंत्रक में करने के विपरीत, चीजें सूखी रहती हैं। –

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

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