2010-09-06 15 views
5

मैं खुद से पूछता हूं कि मैं दृश्य मॉडल को सही तरीके से कैसे बना सकता हूं।एएसपी.नेट एमवीसी मॉडल के साथ सर्वोत्तम प्रथाओं

उदाहरण के लिए, मेरे पास कुछ टेक्स्ट बॉक्स और ड्रॉपडाउन सूची के साथ एक संपादन दृश्य है।

क्या मुझे ड्रॉपडाउन सूची को नए दृश्य मॉडल में अलग करना चाहिए या संपादन दृश्य को ड्रॉपडाउन सूची के लिए एक व्यूमोडेल है?

या आम तौर पर बोलते हुए, क्या मुझे अलग-अलग दृश्य मॉडल में विशेष इनपुट फ़ील्ड अलग करना चाहिए?

किसी दृश्य में एक से अधिक दृश्य मॉडल कब और कब नहीं होना चाहिए?

उत्तर

6

आपके व्यू मॉडल को सही तरीके से बनाने और व्यवस्थित करने का कोई स्पष्ट नियम नहीं है। आपका प्रश्न उत्तर देने के लिए बहुत अस्पष्ट है क्योंकि आपने बहुत कम संदर्भ प्रदान किया है।

मैं आम तौर पर स्क्रीन के कार्यात्मक ब्लॉक/भागों के अनुसार मॉडलों को समूहबद्ध करता हूं। तो उदाहरण के लिए कल्पना करें कि आपके पास संपर्क विवरण, डिलीवरी पता, बिलिंग जानकारी इत्यादि जैसे कई अनुभाग/फ़ील्ड से बना एक जटिल रूप है ... एक पता सड़क, ज़िप, शहर और देश के ड्रॉपडाउन से बना सकता है। मैं उन चार गुणों वाला पता दृश्य मॉडल तैयार करूंगा ताकि इसे कई विचारों/आंशिक विचारों में पुन: उपयोग किया जा सके। यह सत्यापन को भी आसान बना देगा क्योंकि आश्रित गुण उसी दृश्य मॉडल में पैक किए जाएंगे जैसे कि उदाहरण के लिए मान्य है कि दिया गया ज़िप शहर से मेल खाता है और यह कि शहर चयनित देश से संबंधित है।

उदाहरण के लिए, मेरे पास कुछ टेक्स्ट बॉक्स और ड्रॉपडाउनसूची के साथ एक संपादन दृश्य है।

मैं कोई नया दृश्य मॉडल में ड्रॉपडाउन सूची अलग करना चाहिए या संपादित दृश्य dropdownlist के लिए एक सूची के साथ एक viewmodel है shoud?

मैं नहीं कहूंगा, अगर वे फ़ील्ड किसी तरह से कार्यात्मक रूप से संबंधित हैं।

निष्कर्ष: आपको स्क्रीन पर प्रति फ़ील्ड दृश्य मॉडल और प्रति एप्लिकेशन एक एकल दृश्य मॉडल रखने के बीच सही संतुलन प्राप्त करना होगा।

+0

आपके द्वारा उल्लिखित पुन: प्रयोज्य उप दृश्य मॉडल बनाने के संबंध में - क्या होगा यदि आप अपना पता दृश्य मॉडल बदलते हैं क्योंकि आपको इसे केवल एक विशिष्ट दृश्य के लिए संशोधित करने की आवश्यकता होती है - परिवर्तन अन्य दृश्यों को प्रभावित करेगा जो पता दृश्य मॉडल का उपयोग करते हैं, भले ही आपने केवल एक दृश्य को बदलने के लिए इंडेंट किया हो ? – BornToCode

0

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

0

यदि आप टाइप किए गए दृश्य द्वारा उपयोग किए गए डेटा को स्टोर करना चाहते हैं तो आप आमतौर पर व्यूमोडेल पैटर्न का उपयोग करना चाहते हैं। यूआई विशिष्ट तर्क और विवरण के लिए, एक व्यूहेल्पर पैटर्न अधिक उपयुक्त होगा।

ViewModel पर कुछ चर्चा के लिए इस आलेख को देखें। http://theminimalistdeveloper.com/2010/08/21/why-when-and-how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/

+0

मैंने लेख के माध्यम से देखा और मैं सोच रहा हूं कि मॉडल निर्देशिका और व्यूमोडेल निर्देशिका क्यों है? मॉडल direcotry दृश्य मॉडल के लिए है। उल्लिखित मॉडल निर्देशिका डोमेन मॉडल/ऑब्जेक्ट मॉडल की तरह दिखती है। तो उन्होंने एक दृश्य मॉडल बनाने के लिए क्या किया है जिसमें दो डोमेन ऑब्जेक्ट्स शामिल हैं। – Rookian

+0

@Rookian। हाँ आप सही हैं। ViewModel ViewModels के लिए है जबकि मॉडल डोमेन/व्यावसायिक मॉडल के लिए है। –

1

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

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