Why is this consider bad practice? or is it? (ASP.Net) -


क्या यह कोड खराब व्यवहार माना जाएगा:

  & lt; div id = "sidebar" & gt; & Lt;% = प्रदर्शन मीटिंग (12)% & gt; & Lt; / div & gt;  

यह मैंने जिस छोटे वेब ऐप पर काम किया है, उसका डिफ़ॉल्ट.aspx से कोड का स्निपेट है। यह पूरी तरह से अच्छी तरह से काम करता है, बहुत तेजी से चलाता है, लेकिन हमेशा की तरह, मैं इस तथ्य से अवगत हूं कि यह सिर्फ इसलिए कि यह काम करता है, इसका मतलब यह नहीं है कि ठीक है।

असल में, डिस्प्ले मीटिंग्स सब-रूटिन स्वरूपित का एक गुच्छा एचटीएमएल (असीर्ड सूची वास्तव में), कोई स्वरूपण नहीं है, केवल आवश्यक HTML, और फिर मेरा सीएसएस सभी आवश्यक स्वरूपण करता है।

सूची बनाने के लिए डेटा SQL सर्वर डेटाबेस से आता है (पैरामीटर नियंत्रण कितनी पंक्तियों को वापस करने के लिए) और मैं तेजी से पहुंच के लिए संग्रहीत कार्यविधियों और डेटारर्स का उपयोग कर रहा हूं। यह मेरे फ्रंट-एंड असाधारण सरल और स्वच्छ, आईह्हो रखता है, और मुझे एक अलग मॉड्यूल में VB या C # में सभी काम करने देता है।

मैं निश्चित रूप से एक डाटाबेस पुनरावर्तक का उपयोग कर सकता हूं (और शायद 6 या अधिक अन्य तरीकों) एक ही बात को पूरा करने, लेकिन वे किसी भी बेहतर कर रहे हैं? VS2010 की डिज़ाइन-टाइम सुविधाओं को खोने के अलावा?

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

क्या "ग़लत" भाग है, कि उपकार्य HTML लौट रहा है, या क्या मेरे पास HTML मार्कअप के भीतर से कोड-स्निपेट है?

दोनों , एक तरीके से। और न ही

& lt;% = foo% & gt; का उपयोग करने के साथ सीधे "गलत" नहीं है; अगर वहाँ थे, तो यह ढांचा का हिस्सा नहीं होगा। इसके साथ "गलत" क्या है कि यह दो तरह की निर्भरता निर्धारित करता है जिसे आप जरूरी नहीं चाहते हैं आपका HTML मार्कअप पर निर्भर है और उसे कोड-पीछे के बारे में पता होना चाहिए। इसे विधि को कॉल करना होगा, जो बदले में मार्कअप के लिए समर्पित है और कुछ और नहीं। यदि आप अपने आउटपुट में परिवर्तन करना चाहते हैं, तो आपको विधि, मार्कअप या दोनों को बदलना पड़ सकता है।

मैं क्या कहने की कोशिश कर रहा हूं यह है कि जो भी आप कर रहे हैं वह आपके कोड को कम बनाए रखने योग्य और कम लचीला बनाता है, अगली बार जब आप हुड को खोलना चाहते हैं

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

मैं इसे कैसे कर सकता था? यह स्थिति पर निर्भर करता है, स्पष्ट रूप से। अगर मैं डेटाबेस के साथ एक मानक घटक का इस्तेमाल कर सकता था, तो मैंने ऐसा किया होता। वह हमेशा पसंदीदा होता है यदि HTML एक घटक का उपयोग करने के लिए बहुत जटिल था, तो मैं मार्कअप के लिए एक प्लेसहोल्डर के रूप में एक शाब्दिक नियंत्रण का उपयोग करता हूं, और एक अलग घटक में मार्कअप उत्पन्न करता है - संभवतः उपयोगकर्ता नियंत्रण।

मुद्दा यह है कि मार्कअप को अन्य मार्कअप उत्पन्न करने की विधि के बारे में कुछ नहीं पता है, यह सिर्फ "कुछ यहाँ जाता है" कहता है और उस कोड-पीछे पर निर्भर करता है जो उस मार्कअप को तय करने के लिए संभालता है।


Comments