2009-04-08 12 views
28

मैं एएसपी.नेट एमवीसी में एचटीएमएल हेल्पर्स रखने का कारण समझता हूं और इसे स्वयं प्रदान करने के लिए इसे विस्तारित करता हूं, लेकिन मुझे आश्चर्य है कि HTML मददगार का उपयोग करना एक अच्छा विचार है या नहीं।एएसपी एमवीसी एचटीएमएल हेल्पर्स - अच्छा या बुरा?

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

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

+0

नहीं। जब तक कि सहायक एमवीसी की चिंताओं का उल्लंघन नहीं कर रहे हैं, तो वे ऐसा कुछ कर रहे हैं जो प्रस्तुति तर्क नहीं है, तो उनके साथ कुछ भी गलत नहीं है। हां, कुछ जटिल सहायक वास्तव में चिंताओं को अलग करने का उल्लंघन कर रहे हैं, लेकिन यह वास्तव में एक अलग तर्क है कि सहायक स्वयं स्वयं अच्छे या बुरे हैं या नहीं। –

उत्तर

14

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

कहा जा रहा है कि, यदि आपके पास अपने सहायकों में व्यावसायिक तर्क है तो आप उन्हें गलत उपयोग कर रहे हैं। यह मूल रूप से प्रस्तुतिकरण तर्क के लिए कोड है जो एकाधिक पृष्ठों में डुप्लिकेट किया गया है, और लक्ष्य स्क्रिप्टलेट टैग को जितना संभव हो सके मार्कअप में रखना है।

जब तक आप मददगारों का उपयोग करने के तरीके का उपयोग करते हैं, तो डिज़ाइनरों के उपयोग के बारे में सीखने के लिए यह काफी छोटा होना चाहिए। बस याद रखें कि लक्ष्य चीजों को सरल रखना है, अगर वे चीजों को और अधिक जटिल बनाते हैं, तो इसका मतलब है कि उनका सही ढंग से उपयोग नहीं किया जा रहा है।

9

ग्रेट टिप्पणी, मैट। अभी भी सवाल है कि "शुद्ध" एमवीसी कार्यान्वयन में, एचटीएमएल हेल्पर्स एक अच्छा विचार है। मुझे लगता है कि जादू शब्द, "शुद्ध" है। जब भी मैं चीजों को करने के "उचित" तरीके के बारे में सोचने के लिए धीमा हो जाता हूं, तो मैं वास्तव में यह देखने की कोशिश कर रहा हूं कि शुद्ध दृष्टिकोण शुद्धिक दृष्टि के साथ फिट बैठता है या नहीं। तो, एक शुद्धवादी HTML मददगार का उपयोग करेगा?

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

+1

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

3

सहायतागारों के साथ निश्चित रूप से कुछ भी गलत नहीं है। उनका उपयोग आपके विचारों को साफ और घोषणात्मक रखने के लिए किया जाता है। एक ऐसी कहानियां है जो "अगर कोई है" जैसे कुछ है, तो "आपके विचार में कथन, आप इसे गलत कर रहे हैं"। वे रूबी ऑन रेल और केक PHP जैसे कई प्रमुख एमवीसी ढांचे में उपयोग किए जाते हैं। this post देखें। "पुरीस्ट" या नहीं, सहायक एक अच्छी बात है और बुरा अभ्यास या लीकी अबास्ट्रक्शन से भ्रमित नहीं होना चाहिए।

1

मुझे लगता है कि दूसरों ने उल्लेख नहीं किया है कि एक महत्वपूर्ण बिंदु आपके विचारों की पोर्टेबिलिटी है।

आप अपने एचटीएमएल, जावास्क्रिप्ट और सीएसएस को किसी अन्य प्लेटफ़ॉर्म पर तुरंत एप्लिकेशन में ले जा सकते हैं। आपको सभी बदसूरत HTMLHiders को कनवर्ट करने की ज़रूरत नहीं है .. क्षमा करें, HTMLHelpers .. वास्तविक HTML पर।

जबकि मेरे पास .NET ढांचे का उच्चतम सम्मान है जो मेरे विकास के समय को कम करता है और अपना काम आसान बनाता है, मुझे दृढ़ता से लगता है कि विचार गैर-मालिकाना होना चाहिए।

आप मॉडल और नियंत्रक में ढांचे से लगभग सभी लाभ प्राप्त कर सकते हैं। आपकी प्रस्तुति परत में ढांचे पर निर्भरता इंजेक्शन करना ट्रेडऑफ, आईएमओ के लायक नहीं है।