2010-05-26 11 views
5

मुझे अपने विचारों में बहुत सारे कोड लिखते हैं जो नीचे दिए गए कोड की तरह दिखते हैं। इस मामले में, मैं एक नौसिखिए के लिए कुछ व्याख्यात्मक HTML जोड़ना चाहता हूं, और एक विशेषज्ञ उपयोगकर्ता के लिए अलग-अलग HTML जोड़ना चाहता हूं।एक एमवीसी व्यू में ब्रांचिंग तर्क

<% if (ViewData["novice"] != null) { %> 
some extra HTML for a novice 
<% } else { %> 
some HTML for an expert 
<% } %> 

यह प्रस्तुति तर्क है, इसलिए यह समझ में आता है कि यह नियंत्रक बनाम दृश्य में है। हालांकि, यह वास्तव में बदसूरत हो जाता है, खासकर जब रीशेपर सभी ब्रेसिज़ को चारों ओर घुमाने के लिए चारों ओर ले जाना चाहता है (क्या इसे देखने के लिए बंद करने का कोई तरीका है?)।

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

या मुझे सामान्य सामानों के साझा आंशिक दृश्य के साथ दो अलग-अलग विचार करना चाहिए?

उत्तर

2

आदर्श रूप से, इस प्रकार का तर्क दृश्य मॉडल में संभाला जाएगा और दृश्य केवल मॉडल को प्रस्तुत करना चाहिए।

तो आप अपने ध्यान में रखते हुए की तरह कुछ हो सकता है:

<%= ViewData["helptext"] %> 

और नियंत्रक में अपने तर्क होगा कुछ की तरह:

ViewData["helpText"] = isNovice ? noviceText : expertText; 

कि जिस तरह से आप नियंत्रक करने के लिए वापस उस तर्क को धक्का कर सकते हैं और अपने विचारों को अच्छी और साफ रखें

+0

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

+0

अच्छा लोमैक्स बहुत बेहतर है। मुझें यह पसंद है। +1 –

+0

यह निर्भर करता है कि जटिल पाठ के साथ स्थिति क्या है और कितना परिवर्तन आवश्यक है, लेकिन मुझे नहीं लगता कि वैरिएबल हिस्सों को प्रस्तुत करने के लिए एक ही दृष्टिकोण का उपयोग क्यों नहीं किया जा सकता है? – lomaxx

1

आप समान मॉडल के साथ 2 पूरी तरह से अलग HTML पृष्ठ बनाने की कोशिश कर रहे हैं। आप एक अलग दृश्य चाहते हैं। सशर्त-शाखाकरण तर्क के साथ डिजाइन पैटर्न को चालाक करने की कोशिश न करें।

एचटीएमएल हेल्पर्स आपको यहां बहुत मदद करने जा रहे हैं, क्योंकि ऐसा लगता है कि आप अन्य के अलावा अन्य तर्क दोहराएंगे नहीं।

+0

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

+0

पर फेंक दिया जाना चाहिए मुझे नहीं लगता कि आप एक अलग दृश्य चाहते हैं क्योंकि यह अतिरिक्त रखरखाव ओवरहेड बनाएगा। मैं तर्क को वापस नियंत्रक को धक्का देने के इच्छुक हूं और एक साफ दृश्य – lomaxx

+0

है आप आंशिक रूप से कोड दोहरा सकते हैं, लेकिन बड़ी तस्वीर ऐसा लगता है जैसे आप दो अलग-अलग विचार चाहते हैं, यानी "एक विशेषज्ञ उपयोगकर्ता के लिए अलग-अलग HTML" दोहराना कोड खराब है, एक डिजाइन पैटर्न के खिलाफ काम करना आईएमओ खराब है। –

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