2008-09-20 17 views
9

में कोड पीछे एएसपी.नेट एमवीसी में व्यू फ़ाइल के पीछे कोड का उद्देश्य व्यूपेज के जेनेरिक पैरामीटर की सेटिंग के अलावा क्या है?एएसपी.नेट एमवीसी

उत्तर

12

यहाँ वजहों कोड-पीछे उपयोगी हो सकता है की मेरी सूची my own post से लिया है मुझे यकीन है कि वहाँ कई और अधिक कर रहे हैं रहा हूँ

  • Databinding विरासत ASP.NET नियंत्रण -।। एक अगर विकल्प उपलब्ध नहीं है या अस्थायी समाधान की आवश्यकता है।
  • देखें लो जीआईसी जिसे किसी प्रकार का घोंसला या पदानुक्रमित HTML बनाने के लिए रिकर्सन की आवश्यकता होती है।
  • अस्थायी चर का उपयोग करने वाले तर्क देखें। मैं अपने टैग सूप में स्थानीय चर को परिभाषित करने से इनकार करता हूं! मैं उन्हें कम से कम दृश्य वर्ग पर गुणों के रूप में चाहता हूं।
  • तर्क जो केवल एक दृश्य या मॉडल के लिए विशिष्ट है और एक HTMLHelper से संबंधित नहीं है। एक साइड नोट के रूप में मुझे नहीं लगता कि एचटीएमएलहेल्पर को किसी भी 'मॉडल' वर्गों के बारे में पता होना चाहिए। यह ठीक है अगर यह किसी मॉडल के अंदर परिभाषित कक्षाओं के बारे में जानता है (जैसे कि आईनेमरेबल, लेकिन मैं उदाहरण के लिए नहीं सोचता कि आपके पास कभी भी एक HTMLMelper होना चाहिए जो उत्पाद मॉडल लेता है। HtmlHelper विधियां आपके सभी दृश्यों से दिखाई देने पर समाप्त होती हैं जब आप HTML + डॉट और मैं वास्तव में जितना संभव हो सके इस सूची को कम करना चाहता हूं।
  • क्या होगा यदि मैं कोड लिखना चाहता हूं जो एचटीएमएल जेनरिक कंट्रोल और उस नामस्थान में अन्य वर्गों का उपयोग करता है ताकि मेरे एचटीएमएल को ऑब्जेक्ट उन्मुख तरीके से उत्पन्न किया जा सके (या मेरे पास मौजूदा कोड है जो करता है कि मैं पोर्ट करना चाहता हूं)
  • क्या होगा यदि मैं भविष्य में एक अलग दृश्य इंजन का उपयोग करने की योजना बना रहा हूं। मैं टैग सूप से कुछ तर्क को बाद में पुन: उपयोग करना आसान बनाना चाहता हूं।
  • यदि मैं सक्षम होना चाहता हूं तो क्या होगा मेरे मॉडल वर्गों का नाम बदलें और इसे view.aspx पर जाने के बिना स्वचालित रूप से मेरे दृश्य को दोबारा दोहराएं और कक्षा का नाम बदलें।
  • क्या होगा यदि मैं एक HTML डिजाइनर के साथ समन्वय कर रहा हूं, जिसे मैं 'टैग सूप' को गड़बड़ न करने पर भरोसा नहीं करता हूं और .aspx.cs फ़ाइल में बहुत बुनियादी लूपिंग से परे कुछ भी लिखना चाहता हूं।
  • यदि आप दृश्य के डिफ़ॉल्ट सॉर्ट विकल्प के आधार पर डेटा को सॉर्ट करना चाहते हैं। मैं वास्तव में नहीं सोचता कि नियंत्रक को आपके लिए डेटा सॉर्ट करना चाहिए यदि आपके पास एकाधिक सॉर्टिंग विकल्प केवल दृश्य से उपलब्ध हैं।
  • आप वास्तव में कोड में दृश्य तर्क को डीबग करना चाहते हैं जो actuallky ​​जैसा दिखता है .cs और HTML नहीं।
  • आप कोड लिखना चाहते हैं जिसे बाद में फैक्टर किया जा सकता है और कहीं और पुन: उपयोग किया जा सकता है - आप अभी तक निश्चित नहीं हैं।
  • आप प्रोटोटाइप करना चाहते हैं कि नया एचटीएमएल हेल्पर क्या हो सकता है लेकिन आपने अभी तक यह तय नहीं किया है कि यह सामान्य है या एचटीएमएलहेल्पर बनाने के लिए वारंट नहीं है। (मूल रूप से पिछले बिंदु के समान)
  • आप आंशिक दृश्य प्रस्तुत करने के लिए एक सहायक विधि बनाना चाहते हैं, लेकिन मुख्य पृष्ठ के दृश्य से डेटा खींचकर और आंशिक नियंत्रण के लिए मॉडल बनाकर इसके लिए एक मॉडल बनाने की आवश्यकता है वर्तमान पाश पुनरावृत्ति के आधार पर।
  • आप मानते हैं कि एक सिंगल फ़ंक्शन में प्रोग्रामिंग जटिल तर्क एक पुरानी और अनजान अभ्यास है।
  • आपने आरसी 1 से पहले ऐसा किया और किसी भी समस्या में भाग नहीं लिया !!

हाँ!कुछ विचारों को कोडबेइंड की आवश्यकता नहीं होनी चाहिए।

हाँ! यह .cs फ़ाइल के अतिरिक्त बनाई गई बेवकूफ। डिज़ाइनर फ़ाइल प्राप्त करने के लिए बेकार है।

हाँ! प्रत्येक दृश्य के बगल में उन छोटे + संकेत प्राप्त करने के लिए यह कष्टप्रद है।

लेकिन - वास्तव में कोड-पीछे में डेटा एक्सेस तर्क नहीं डालना मुश्किल है।

वे निश्चित रूप से evil नहीं हैं।

+0

अद्यतन: बेशक नए रेज़र सिंटैक्स में कोडबेइंड नहीं है - कभी भी (cshtml.cs होगा और यह मूर्खतापूर्ण होगा!)। मैं इस पोस्ट को रेज़र सिंटैक्स पर अपनी भावनाओं के लिए किसी बिंदु पर अपडेट करूंगा - लेकिन संक्षेप में मैंने पाया है कि यह वास्तव में दोनों दुनिया के सर्वश्रेष्ठ प्रदान करता है। आप एचटीएमएल जेनरेट करने वाले स्थानीय हेल्पर फ़ंक्शंस को जोड़ सकते हैं और मुझे लगता है कि आप सभी उपर्युक्त चीजें जो आप कर सकते हैं (यहां तक ​​कि रिकर्सन) .cshtml फ़ाइल के भीतर। यह बहुत ही सुरुचिपूर्ण है। अभी भी दुर्व्यवहार के अधीन है, लेकिन यदि आप सावधान हैं तो शक्तिशाली! –

3

कोई उद्देश्य नहीं है। बस अधिक जानकारी के लिए मॉडल

ViewPage<Model> 

देखें this ऐसे ब्लॉग पोस्ट को स्थापित करने के लिए को छोड़कर उसका उपयोग नहीं करते।

+0

यहां तक ​​कि मॉडल को सेट करने के लिए कोड-बैक फ़ाइल के बिना भी किया जा सकता है, एक बदसूरत वाक्यविन्यास जैसे व्यूपेज'1 [मॉडल] का उपयोग करके :) –

+0

उद्देश्यों की पूरी तरह से हैं। नीचे मेरी पोस्ट देखें। इस ब्लॉगपोस्ट के लेखक बीटीडब्ल्यू ने खुद को यह कहते हुए कहा कि लोगों को नोटिस लेने के लिए उन्हें 'बुराई' कहने का एक झटका है। वे बिल्कुल बुरा नहीं हैं। मैं कुछ भयानक टैग सूप देखने के लिए इंतजार नहीं कर सकता जिसके परिणामस्वरूप लोग इस पैटर्न का पालन करने की कोशिश कर रहे हैं –

-1

यह एक अच्छा सवाल है। विशिष्ट एमवीसी पैटर्न का उपयोग किए बिना, एमवीसी एएसपी.NET पर्यावरण में मौजूद नहीं है।

देखें = aspx

नियंत्रक = aspx.cs (codebehind)

मॉडल = POCO (प्लेन ओल्ड सी #/वीबी/नेट वस्तुओं)

मैं सोच रहा हूँ क्यों की अतिरिक्त कार्यक्षमता एमवीसी ढांचा सहायक है। मैंने जावा एंड एमवीसी और Java Struts के साथ कई वर्षों पहले (2001) के साथ महत्वपूर्ण रूप से काम किया, और उस समय एमवीसी में अवधारणाओं को इंटरनेट एप्लिकेशन संगठन और विकास की समस्याओं का समाधान पाया, लेकिन फिर पाया कि कोडबींड ने नियंत्रक अवधारणा को सरल बना दिया था और था दूसरों को विकसित करने और संवाद करने के लिए तेज़ी से। मुझे यकीन है कि दूसरे मेरे साथ असहमत हैं, और मैं अन्य विचारों के लिए खुला हूं। एमवीसी को सबसे बड़ा मूल्य इंटरनेट विकास के लिए फ्रंट कंट्रोलर पैटर्न है, इंटरनेट एप्लिकेशन के लिए एकल एंट्री स्रोत। लेकिन, दूसरी तरफ, यह पैटर्न वर्तमान एएसपी.नेट प्रौद्योगिकियों के साथ लागू करने के लिए काफी सरल है। मैंने दूसरों को यह कहते हुए सुना है कि यूनिट परीक्षण तर्क है। मैं यह भी समझ सकता हूं, हमने 2001 में हमारे एमवीसी ढांचे के साथ जुनीट का इस्तेमाल किया; लेकिन मुझे विश्वास नहीं है कि यह टी एमवीसी ढांचे का उपयोग करने के लिए परीक्षण को सरल बनाता है।

पढ़ने के लिए धन्यवाद!

+0

एएसपी.नेट एमवीसी में व्यू कोडबीहिंड (एएसपीएक्स सीएस) के साथ एक एएसपीएक्स पेज है, और नियंत्रक आमतौर पर कहीं और स्थित होता है (SomeController.cs)। – Casper

+1

सादा पुराना एएसपी.नेट एमवीसी नहीं है। नियंत्रक और मॉडल दोनों के लिए कोड-बैक मैप्स, और नियंत्रक एक दृश्य पूरी तरह से एक साथ बंधे होते हैं। एमवीसी का पूरा बिंदु नियंत्रक को कम करता है और देखता है, इसलिए एक नियंत्रक के पास कई अलग-अलग विचार हो सकते हैं, या एक दृश्य कई नियंत्रकों को संभाल सकता है। –

+0

-1 क्षमा करें लेकिन यह उपयोगी जानकारी है लेकिन इस प्रश्न का उत्तर नहीं –

3

this Blogpost पर कोड को पीछे हटाना एक कामकाजी उदाहरण है। एकमात्र समस्या जिसके साथ मैं फंस गया हूं वह यह है कि यह कक्षा पर नामस्थान सेट करने में सक्षम नहीं है।

+0

यह किसी भी तरह से सवाल का जवाब कैसे है। उपयोगी जानकारी हाँ - लेकिन यह स्वीकार्य उत्तर था? कोई अपराध पैको नहीं ;-) –

0

कोडबेइंड कुछ मजबूत टाइपिंग के साथ-साथ आपको देखे जाने वाले इंटेलिजेंस समर्थन प्रदान करता है। यदि आपको इनमें से किसी भी सुविधा के बारे में परवाह नहीं है, तो आप इसे हटा सकते हैं।

उदाहरण के लिए, मैं आम तौर पर NVelocity ViewEngine का उपयोग करता हूं क्योंकि यह साफ़ और काफी सीधे आगे है।

8

अंत में, सवाल आप खुद से पूछ यह है:

क्या इसका कोड ए) प्रक्रिया, स्टोर, पुनः प्राप्त, पर कार्रवाई करने या डेटा का विश्लेषण, या बी) डेटा को प्रदर्शित करने में मदद करें?

यदि उत्तर ए है, तो यह आपके नियंत्रक में है। यदि उत्तर बी है, तो यह दृश्य में है।

यदि बी, यह अंततः शैली का सवाल बन जाता है। यदि आपके पास उपयोगकर्ता को कुछ प्रदर्शित करने का प्रयास करने के लिए कुछ लंबे समय तक सशर्त संचालन हैं, तो आप संपत्ति में पीछे कोड में उन सशर्त संचालन को छिपा सकते हैं। अन्यथा, ऐसा लगता है कि अधिकांश लोग <%%> और <% =%> टैग का उपयोग करके सामने वाले अंत में कोड को ऑनलाइन छोड़ देते हैं।

मूल रूप से, मैंने सभी <%%> टैग के अंदर अपना प्रदर्शन तर्क डाल दिया। लेकिन हाल ही में मैंने अपने एक्सएचएमएल को साफ रखने के लिए अपने कोड में कुछ भी गन्दा (जैसे एक लंबी सशर्त) डालने के लिए लिया है।यह चाल यहां अनुशासन है - यह कोड के पीछे व्यापार तर्क लिखना शुरू करने के लिए बहुत मोहक है, जो आपको एमवीसी में नहीं करना चाहिए।

यदि आप परंपरागत एएसपी.नेट से एएसपी.नेट एमवीसी में स्थानांतरित करने की कोशिश कर रहे हैं, तो आप अभ्यास के लिए महसूस होने तक कोड को पीछे छोड़ सकते हैं (हालांकि यह अभी भी आपको व्यवसाय तर्क को अंदर रखने से नहीं रोकता है । <%%>

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