2011-11-19 21 views
9

में रेजर पेज लाइफसाइक्ल सामान्य रूप से पाइपलाइन प्रस्तुत करने के बारे में मेरा प्रश्न है, मैंने एएसपी.नेट एमवीसी पाइपलाइन योजना देखी है और व्यू इंजन नामक एक कदम था, तो यह कैसे काम करता है? मैं इस परिदृश्य के बारे में जानना चाहता हूं:एएसपी.नेट एमवीसी

  • पहले, मास्टर पेज या दृश्य क्या प्रदान किया जाता है?
  • यदि मैं पृष्ठ की शुरुआत में @{} ब्लॉक में Response.End() का उपयोग करता हूं तो यह पृष्ठ का अंतःस्थापित निष्पादन करता है और दृश्य को प्रस्तुत करता है?

उत्तर

15

पहले, मास्टर पेज या दृश्य क्या प्रदान किया जाता है?

दृश्य। पार्सर लेआउट से शुरू होता है और बच्चे के विचारों और आंशिक रूप से पुनरावर्ती एक लिफो (लास्ट इन फर्स्ट आउट) संरचना बनाता है। एक बार लिफो तैयार हो जाने पर यह तत्वों को पॉप आउट करना और प्रसंस्करण करना शुरू कर देता है। इसका मतलब यह है कि आंतरिक-अधिकांश आंशिक/विचार लेआउट से पहले संसाधित किए जाएंगे और अंतिम संसाधित होने वाला लेआउट ही लेआउट होगा।

तो मैं पेज के शुरू में @ {} ब्लॉक में Response.End() का उपयोग पृष्ठ के इस अंतरायन निष्पादन करता है और बंद हो जाता है देखने के प्रस्तुत करना?

किसी भी दृश्य में Response.End का उपयोग करके एक पूरी तरह से खाली पृष्ठ प्रदान किया जाएगा। किसी भी दृश्य में कभी भी उपयोग न करें। Response.End मूल रूप से ThreadAbortException को ट्रिगर करके वर्तमान धागे को रोकता है जो ऐसा कुछ नहीं है जिसे आप अपने रेजर दृश्यों में करना चाहते हैं।

+0

ओह, धन्यवाद, यह मेरे लिए कई चीजें बताता है! – Alexander

2

स्टीव सैंडर्सन के Request-Handling Pipeline Poster पर एक नज़र डालें। यह पूरी अनुरोध प्रक्रिया को विस्तार से बताता है। यह एमवीसी संस्करण 1.0 से है, लेकिन यह अभी भी मान्य है। रेजर के साथ बस 'वेबफॉर्म' को प्रतिस्थापित करें।

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

+0

कभी-कभी यह जानना अच्छा होता है कि चीजें कैसे काम करती हैं, यह समझने में मदद करती है कि यह इस तरह क्यों काम करता है और अन्य तरीकों से नहीं :) – Alexander

+3

मैं यह ज्ञान दिखा सकता हूं कि यह ज्ञान अच्छा है। मैं अपने प्रोजेक्ट में बंडल करने के लिए कैसेट का उपयोग कर रहा हूं। इसमें पृष्ठ में संसाधन बंडलों को "सहित" के लिए स्थिर तरीके हैं। एक कोड ब्लॉक जैसे कि @ @ {बंडल। संदर्भ ("~/बंडल/पेजScripts", "हेड");} 'बच्चे के दृश्य में पहले निष्पादित किया जाएगा और यदि यह लेक्चर में परिभाषित jquery पर निर्भर है, लेआउट कोड बच्चे के विचारों के बाद निष्पादित होगा, जिसके परिणामस्वरूप स्क्रिप्ट फाइलों का गलत क्रम होगा। इसे ठीक करने के कई तरीके हैं, लेकिन यह जानने में मदद करता है कि उस क्रम में कॉल क्यों हो रही हैं। – JonathanTech

+2

कारण @ जोनाथनटेक देता है कारण मुझे यह जानने की आवश्यकता है - केवल मैं एमवीसी 4 सिस्टम का उपयोग कर रहा हूं। वेब। कैसेट के बजाय ऑप्टिमाइज़ेशन। हालांकि वही विचार है। –

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