2011-12-13 16 views
10

मेरे पास लेआउट में परिभाषित नेविगेशन बार वाला एक साइट है। नेविगेशन बार साइट के कई दृश्यों में उपयोग किया जाता है और इसमें कुछ गतिशील सामग्री होती है जो डेटाबेस में कुछ प्रश्नों से उत्पन्न होती है।एएसपी.नेट एमवीसी: एचटीएमएल का उपयोग करें। पार्टिकल या एचटीएमएल। एक्शन?

मुझे आश्चर्य है कि इस मेनू को प्रस्तुत करने का सर्वोत्तम अभ्यास क्या है (आंशिक दृश्य में परिभाषित)।

जहाँ तक मुझे पता के रूप में मैं हर एक के लिए दो तरह से यह कर सकते हैं कुछ फायदे और नुकसान के साथ,:

Html.Action का उपयोग करना: + यह मानना ​​है कि लेआउट उपयोग कर रहा है से पूरी तरह से स्वतंत्र है - यह पृष्ठ पृष्ठ का एक अनुभाग प्रस्तुत करने के लिए एक अतिरिक्त अनुरोध जोड़ता है - मैं एक एक्शन विधि जोड़ रहा हूं जो आंशिक दृश्य देता है जिसे अजाक्स से नहीं कहा जाता है।

Html.Partial का उपयोग करना: + पूरे दृश्य रेंडर करने के लिए एक सरल अनुरोध - प्रत्येक दृश्य मॉडल के बाद से मैं कई परिदृश्य है नेविगेशन पट्टी

मैं वास्तव में इस पर अपनी अंतर्दृष्टि की सराहना करेंगे के लिए आवश्यक जानकारी होना आवश्यक है इस तरह मेरी साइट पर और मुझे यकीन नहीं है कि कौन सा सबसे अच्छा है।

धन्यवाद!

उत्तर

14

मैं HTML.Action का उपयोग करूंगा, विशेष रूप से यदि इस मेनू में डेटाबेस से प्राप्त कुछ गतिशील डेटा शामिल हैं। लाभ यह है कि आप मुख्य रूप से पूरी तरह से अलग कार्रवाई में इस fetching पूरी तरह से अलग कर सकते हैं। इसके अलावा बाल कार्यों के उत्पादन को [OutputCache] विशेषता के साथ सजाकर कैश किया जा सकता है। ऐसा करने से आप डेटा को अक्सर बदल नहीं सकते हैं, तो डेटा आपके डेटाबेस पर लोड को कम कर सकता है।

यह पेज

आप इसके बारे में कुछ गलत समझा गया होगा का एक वर्ग रेंडर करने के लिए एक अतिरिक्त अनुरोध कहते हैं। ग्राहक से कोई अतिरिक्त अनुरोध नहीं है। सब कुछ एक ही अनुरोध में परोसा जाता है। एक अतिरिक्त नियंत्रक त्वरण और कार्रवाई निष्पादन है लेकिन क्लाइंट से एक नया HTTP अनुरोध नहीं है। ऐसा लगता है कि एक ही अनुरोध में 2 नियंत्रक क्रियाएं निष्पादित की गई थीं और उनका परिणाम क्लाइंट को भेजे गए एक HTML पृष्ठ में एकत्रित हुआ था।

+0

हालांकि यह सच है कि यह केवल एक HTTP अनुरोध निष्पादित करता है, यह भी सच है कि एक क्रिया को प्रस्तुत करने का ओवरहेड आंशिक रूप से प्रस्तुत करने से अधिक है। –

+4

@NathanTaylor, यह सच है। एक ओवरहेड है जो आंशिक रूप से प्रस्तुत करने से अधिक है। लेकिन यह उपरांत बाल क्रियाओं का उपयोग करने से प्राप्त होने वाले सभी लाभों की तुलना में बहुत नगण्य है soooooooooooooooo कि हमें इसे स्वीकार करना चाहिए। मेरा मतलब है कि आप चिंताओं को अलग करते हैं, आपको साफ कोड मिलता है, आपको कैशिंग मिलती है जो आंशिक रूप से प्रस्तुत करने के प्रदर्शन में प्रतीत होता है, इसलिए, हाँ, HTML.Action का उपयोग करें। –

+0

मैं निश्चित रूप से असहमत नहीं हूं, मैं सिर्फ तथ्यों को हाइलाइट कर रहा हूं। एचटीएमएल। एक्शन एफटीडब्ल्यू। –

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