2009-06-17 14 views
8

का उपयोग न करने के लिए मैं प्रोफेशनल एएसपी.नेट एमवीसी 1.0 पुस्तक पढ़ रहा हूं और साथ ही अन्य नियंत्रकों को अपने नियंत्रकों के दृश्यों से व्यूडेटा के बजाय व्यूमोडेल का उपयोग करने के बारे में बात कर रहा हूं। लेकिन फिर मुझे उन परिदृश्यों में व्यूडाटा का उपयोग करने के कई उदाहरण दिखाई देते हैं जो कठिन हैं जहां व्यूडाटा से कुछ प्राप्त करने के अलावा कोई अन्य तरीका नहीं है। लेकिन फिर मैंने प्रो एएसपी.नेट एमवीसी फ्रेमवर्क जैसी पुस्तक पढ़ी और वह जो भी बात करता है वह केवल व्यूडाटा है, व्यूमोडेल के बारे में कुछ भी नहीं। तो ViewModel एक बहुत ही नई अवधारणा है या क्या?व्यूडेटा का उपयोग करने के लिए या व्यूडाटा

मुझे लगता है कि व्यूमोडेल एक बेहतर तरीका है लेकिन क्या यह एक ठोस विकल्प है? मेरा मतलब है कि अन्य में एचडीएमएल हेल्पर ऑब्जेक्ट जैसे व्यूमोडेल नहीं है, तो व्यूडाटा आपके लिए इतनी आसानी से उपलब्ध है। या उदाहरण के लिए इसे कस्टम नियंत्रण में उपयोग करें (http://www.codeproject.com/KB/custom-controls/MVCCustomControls.aspx)। तो क्या मैं अलग-अलग लक्ष्यों के आधार पर दोनों का कॉम्बो उपयोग करता हूं या क्या? क्या होगा यदि मैं किसी भी कारण से अपनी विस्तार विधि में ViewModel तक पहुंचना चाहता हूं? मैं यहां खो गया हूं कि किस मार्ग को लेना है। मुझे पता है कि व्यूडाटा को दृढ़ता से टाइप नहीं किया गया है, लेकिन आप अपना दृश्य टाइप निर्दिष्ट करने के लिए सेट कर सकते हैं और इसलिए अपना व्यूडाटा टाइप कर सकते हैं लेकिन मुझे आश्चर्य है। व्यूडाटा के लिए बहुत अधिक समर्थन है, लेकिन मुझे पता है कि व्यूमोडेल एक और अधिक अमूर्त और अलग-अलग तरीका है जिसे साथ ही टाइप किया जा रहा है। मैं बस परिदृश्यों में खुद को कम नहीं करना चाहता हूं जहां मुझे कुछ डेटा जैसे कि व्यूडाटा को पकड़ना होगा जो HtmlHelper क्लास जैसे अन्य ऑब्जेक्ट्स से आसानी से सुलभ है।

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

और तुम सब पर ViewData उपयोग नहीं कर रहे हैं और इसके बजाय अपने नियंत्रकों के साथ ViewModel का उपयोग कर, यह एक सभी या कि में कुछ भी नहीं की तरह लगता है आप ViewModel का उपयोग कर रहे हैं और इसलिए ViewData कोई उद्देश्य आप इसे में सेट कुछ भी साथ नहीं किया है के बाद से है अपने नियंत्रकों से तो इसका उस बिंदु पर कोई उपयोग नहीं है ?? क्या मैं यहां किसी को या रास्ते से भ्रमित कर रहा हूं? खुद के लिए नरक को भ्रमित करना जो निश्चित रूप से है।

उत्तर

2

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

मुझे लगता है कि एमवीसी यहां एक अच्छा दृष्टिकोण प्रदान करता है। यह उन लोगों के लिए प्रदान करता है और त्वरित और गंदे (जरूरी नहीं कि एक बुरी चीज) जिन्हें "इसे पूरा करने" और क्लीनर दृष्टिकोण की आवश्यकता होती है, जिनमें से दोनों उपयोग करने में काफी आसान हैं।

यदि आपने स्कॉट गुर्गी के एएसपी.नेट एमवीसी ट्यूटोरियल को नहीं पढ़ा है; मैं अत्यधिक यह सलाह देते हैं:

http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx

+0

मैं ViewData.Model के बारे में बात नहीं कर रहा हूं। मैं कक्षाओं की एक अतिरिक्त परत के बारे में बात कर रहा हूं जो आपके व्यू और कंट्रोलर "व्यू मॉडेल" के बीच रहते हैं जो आपके मॉडल से कुछ ऑब्जेक्ट्स प्राप्त करने के लिए काम करते हैं ताकि नियंत्रक आपके मॉडल परत से आपके कंट्रोलर हथियाने वाले आइटमों के बजाय उनका उपयोग कर सके। – PositiveGuy

1

अब देखने मॉडल उपयोगी प्रोग्रामिंग पैटर्न माना जाता है। स्टीफन वाल्थर द्वारा इस आलेख को पढ़ें, उदाहरण के लिए: ASP.NET MVC Tip #50 – Create View Models

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