2012-01-27 6 views
32

मैं एक छोटे से ASP.net MVC आवेदन के विकास के प्रमुख के लिए जिम्मेदार हो करने के लिए तैयार हो रही है। यह मेरी पहली बार एक एमवीसी अनुप्रयोग बना रहा है, इसलिए मैं उत्साहित हूं!मैं एएसपीनेट एमवीसी में सर्वर नियंत्रण का उपयोग क्यों नहीं कर सकता?

मैं ध्यान से प्रलेखन से अधिक पढ़ा है और मुझे लगता है कि मैं कैसे MVC काम करता है के सामान्य विचार है। हालांकि, अगर मैं सही ढंग से समझता हूं, सर्वर नियंत्रण (उदाहरण के लिए ग्रिड व्यू) एमवीसी का हिस्सा नहीं हैं।

मेरा प्रश्न है: क्यों? मेरी विकास दुकान में, मुझे ग्रिडव्यू और एमएस चार्ट कंट्रोल जैसे नियंत्रणों का उपयोग करने के लिए इतना उपयोग किया जाता है कि मैं उनके बिना विकास के लिए पूरी तरह से नुकसान में हूं। ऐसा लगता है कि लगभग शुरू हो रहा है।

क्यों सर्वर अनुपलब्ध को नियंत्रित करता है? माइक्रोसॉफ्ट मुझे उनके बिना काम करने की उम्मीद कैसे करता है? विकल्प क्या हैं?

+12

एमवीसी का पूरा बिंदु सर्वर नियंत्रणों का उपयोग नहीं करना है। – SLaks

+2

मैंने सोचा था कि अन्य चीजों के साथ परीक्षण आसान और गति विकास करने के लिए एमवीसी का बिंदु अलग-अलग चिंताओं में अलग विकास था। –

+7

ठीक है; पूरे बिंदुओं में से एक एमवीसी सर्वर नियंत्रणों का उपयोग नहीं करना है। – SLaks

उत्तर

57

मेरा प्रश्न है: क्यों?

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

ASP.NET MVC में एचटीएमएल सहायकों कि विचारों के बीच कुछ पुन: प्रयोज्य एचटीएमएल टुकड़े उत्पन्न करने के लिए इस्तेमाल किया जा सकता है। आप ऐसे सहायकों के Telerik ASP.NET MVC suite पर उदाहरण के लिए एक उदाहरण ले सकते हैं। वे उन्हें नियंत्रण कहते हैं लेकिन क्लासिक वेबफॉर्म सर्वर साइड कंट्रोल के साथ उनके पास कुछ लेना देना नहीं है। वे सिर्फ HTML सहायक हैं।

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

क्या ASP.NET MVC मूल रूप से जिस तरह से यह इसके निर्माताओं द्वारा बनना था इस टपकाया अमूर्त को हटाने और डेवलपर्स के लिए www लाने है करता है। ASP.NET MVC क्लासिक WebForms की तुलना में परिपक्व नहीं है, ताकि आप उपलब्ध नियंत्रण और विगेट्स लेकिन चीजों की एक ही श्रेणी धीरे-धीरे जा रहे हैं पाने की उम्मीद नहीं कर सकते। http://asp.net/mvc:

मैं तुम्हें यहाँ ASP.NET MVC के साथ शुरू की सिफारिश करेंगे। आगे बढ़ो, वीडियो देखें, नमूने के साथ चारों ओर खेलने और देखें कि ASP.NET MVC आप के लिए है या नहीं। और निश्चित रूप से यदि आपको कुछ विशिष्ट कठिनाई या प्रश्न आते हैं तो यहां वापस आने और उससे पूछने में संकोच नहीं करते हैं।

+1

++। जबकि वेबफॉर्म राज्य बनाए रखते हैं और एक पोस्टबैक की अवधारणा रखते हैं, एमवीसी सामान्य वेब मॉडल पर वापस माइग्रेट करता है जहां राज्य जारी नहीं होता है और "पोस्टबैक" की अवधारणा मौजूद नहीं होती है। .NET MVC में "हेल्पर्स" की अवधारणा है जो कि आपके द्वारा उपयोग किए जाने वाले सर्वर नियंत्रणों को प्रतिस्थापित कर सकती है। "वेबग्रिड हेल्पर" की खोज करें और यह आपको एक विचार देगा कि एमवीसी दुनिया में चीजें कैसे की जा सकती हैं। – Khepri

+1

ग्रिड व्यू के बजाय jqGrid @ http://www.trirand.com/blog/ –

+0

पर देखें, मैं रिसाव वेबफॉर्म पर एमवीसी के लाभों से सहमत हूं, हालांकि एमवीसी का दृष्टिकोण यह बहुत दूर ले रहा है, एक्सएमएल मार्कअप होने के स्पष्ट लाभ हैं -आधारित घटक जो वे HTML को समाहित करते हैं और विकास में समय बचाते हैं, बहुत से दोहराए गए HTML कोड को फिर से लिखना रोकते हैं और तर्क की एक परत जोड़ते हैं (अनुकूली/डिवाइस जागरूक नियंत्रण बनाने की क्षमता)। मुझे लगता है कि लेखन सी # में दृश्य यूआई के लिए प्राकृतिक प्रोग्रामिंग अभ्यास नहीं है! – sam360

3

इस के मूल में मॉडल देखें नियंत्रक (MVC) जो decoupling बढ़ावा देता है।विचार यह है कि आप अपने व्यू (वेब ​​पेज) को एक मॉडल के साथ एक मॉडल को खिलाते हैं जिसे इसे प्रस्तुत करने की आवश्यकता होती है। सर्वर नियंत्रण कसकर युग्मित हैं। एमवीसी में राज्य की कोई अवधारणा नहीं है या किसी भी अवधारणा को 'अवधारणा' नहीं होना चाहिए।

3

यह एमवीसी का एक प्रकार है। यह यूआई अबास्ट्रक्शन का उच्च स्तर लेता है जो सर्वर नियंत्रण प्रदान करता है और आपको HTML और जावास्क्रिप्ट के साथ छोड़ देता है। (यह भी कुछ बहुत अच्छा मॉडल बंधन सुविधाओं को जोड़ता है)

8

मैं इतना GridView और एमएस चार्ट नियंत्रण है कि मैं एक पूरा नुकसान पर लगभग हूँ के रूप में उनके बिना विकसित करने की तरह नियंत्रण का उपयोग करने के लिए इस्तेमाल कर रहा हूँ। ऐसा लगता है कि लगभग शुरू हो रहा है।

इस मामले में, पुन: आरंभ करने अच्छा है।

मैं एक समान यात्रा से गुजर चुका हूं। यदि सीधे HTML आपको डराता है, तो System.Web.UI.HtmlControls नामस्थान के साथ काम करने का प्रयास करें। यह आपको मानक HTML नियंत्रण तक पहुंचने की अनुमति देगा, लेकिन आपको अभी भी सर्वर नियंत्रण में बदलने की सुविधा होगी (या तो runat="server" विशेषता निर्दिष्ट करके, या उन्हें समकक्ष एएसपी.NET नियंत्रणों में परिवर्तित करके।

Darin's answer के अलावा, एएसपी.NET के साथ एक और समस्या है: आप वेब के माइक्रोसॉफ्ट के दृष्टिकोण से बंधे हैं। GridView आपको प्यार है? यह खराब HTML उत्पन्न कर रहा है। Paging इसे नियंत्रित करता है? इससे भी बदतर। भले ही आप बहुत कम जानते हों एचटीएमएल अनुपालन के बारे में, नेस्टेड टेबल आपको ठंड दे सकते हैं। एक तरह से, GridView का उपयोग करने वाले हर कोई भाग्यशाली है कि माइक्रोसॉफ्ट (और कम डिग्री, Google और मोज़िला) द्वारा समर्थित विरासत वेब ऐसे ईश्वर भयानक प्रारंभ बिंदु से आया था

अंत में, सारांशित करने के लिए: मेरा सुझाव यह है कि आप अपने पृष्ठों को फिर से लिखने या नए वेब अनुप्रयोगों को विकसित करने का प्रयास करें (जैसा कि आप कर सकते हैं) केवल HtmlControls का उपयोग कर। आपको शायद कुछ जावास्क्रिप्ट/jQuery सीखना होगा, और आपके नियंत्रण को जिस तरीके से आप चाहते हैं उसे संचालित करने के लिए AJAX की दुनिया में प्रवेश करना पड़ सकता है।

इसे एमवीसी की दुनिया में एक कदम पत्थर के रूप में उपयोग करें। आप एक ही तकनीक का उपयोग नहीं करेंगे (और बहुत सारी जावास्क्रिप्ट/jQuery छोड़ सकते हैं), लेकिन यह वेब विकास के बारे में सोचने के तरीके को बदलने में आपकी मदद करेगा, और शायद आसान-से-अवशोषित भाग।

हालाँकि अंत बहुत आप अपने ASP.NET नियंत्रण चाहते हैं, तो आप स्वतंत्रता, की एक बहुत बड़ी डिग्री होगा और आप भी वेबसाइटों है कि नई प्रौद्योगिकियों का इस्तेमाल करते हैं, जो करने के लिए मूल्य वर्धित प्रदान करेगा विकासशील हो जाएगा आपकी वेबसाइटें

+0

यदि आप सावधान हैं और Web.config में xhtml मार्कअप का उपयोग करने के लिए ASP.NET को बताएं (सटीक सेटिंग याद नहीं कर सकते हैं), तो मार्कअप वास्तव में बुरा नहीं है। – jrummell

+0

मैंने उस सेटिंग की कोशिश की; 'ग्रिड व्यू' अभी भी पेजिंग नियंत्रण के लिए नेस्टेड टेबल आउटपुट करता है। – jwiscarson

+1

मुझे स्पष्टीकरण देना चाहिए, यह ज्यादातर मान्य एचटीएमएल उत्पन्न करता है। लेकिन आप सही हैं, यह टेबल के रास्ते का बहुत अधिक उपयोग करता है। – jrummell

0

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

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

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