2011-09-29 8 views
13

मैं एक शीर्ष स्तर _Layout.cshtml कि कुछ इस तरह दिखता है: "। उप लेआउट"एमवीसी रेजर में, आप उप-लेआउट के नीचे परिभाषित एक रेंडरसेक्शन कैसे करते हैं?

<html> 
<head> 
    @RenderSection("Header", required: false) 
</head> 
<body> 

    @RenderSection("LeftPane", required: false) 
    @RenderSection("RightPane", required: false) 
    @RenderBody() 

</body> 
</html> 

तो मैं दो एक केवल वामपंथी अनुभाग को परिभाषित करता है, दूसरा वामपंथ और दाएं भाग दोनों को परिभाषित करता है। इन उप-लेआउट को _LeftPane.cshtml और _LeftPlusRightPane.cshtml कहा जाता है, और उनके पास लेआउट सेट "_Layout.cshtml" है।

फिर प्रत्येक दृश्य .cshtml फ़ाइल में, मैंने लेआउट को या तो _LeftPane.cshtml या _LeftPlusRightPane.cshtml पर सेट किया है, जो कि मैं पृष्ठ पर दिखाना चाहता हूं।

यह सब ठीक काम करता है। समस्या नए "शीर्षलेख" खंड के साथ है जिसे मैंने दस्तावेज़ के <head> भाग में जोड़ा है। यह खंड उप-लेआउट में परिभाषित नहीं है, बल्कि वास्तविक दृश्यों में। जब मैं इस तरह से कुछ देखने की कोशिश करता हूं, तो मुझे त्रुटि मिलती है:

निम्नलिखित अनुभागों को परिभाषित किया गया है लेकिन लेआउट पेज "~/Views/Shared/_LeftPlusRightPane.cshtml": "शीर्षलेख" के लिए प्रस्तुत नहीं किया गया है।

मैं sublayouts में शीर्षलेख अनुभाग प्रस्तुत नहीं करना चाहता, मैं इसे _Layout.cshtml फ़ाइल में प्रस्तुत करना चाहता हूं। उप-लेआउट के माध्यम से, शीर्ष _Layout तक, निम्न स्तर के दृश्य से परिभाषित शीर्षलेख अनुभाग को "कैसे" से गुजरता हूं?

+0

क्या आप अपने अनुभागों की तरह पेस्ट कर सकते हैं? मुझे लगता है कि आप अलग-अलग विचारों में अनुभागों को सही तरीके से लपेट नहीं रहे हैं। – Fourth

+0

एकमात्र अनुभाग जिसमें मुझे कोई समस्या है, वह नया हैडर अनुभाग है। मेरे दृश्य से एक का एक उदाहरण: @ सेक्शन हैडर { <स्क्रिप्ट प्रकार = "टेक्स्ट/जावास्क्रिप्ट" src = "/ शामिल/छायाबॉक्स-3.0/छायाबॉक्स.जेएस"> } –

उत्तर

25

आप लेआउट घोंसला कर सकते हैं। तो _Layout2 में Layout = "_Layout.cshtml";

आप उस सबफ़ोल्डर के लिए एक अलग डिफ़ॉल्ट लेआउट निर्दिष्ट करने के लिए अपने प्रत्येक दृश्य उपफोल्डर्स में _ViewStart फ़ाइलों का भी उपयोग कर सकते हैं।

@section Header {@RenderSection("Header", false)} 

आप श्रृंखला को सामग्री पारित करने के लिए अनुमति देता है कि:

खंड "के माध्यम से पारित" करने के लिए, तुम सिर्फ कुछ इस तरह से करते हैं।

+0

धन्यवाद, यही वही है जो मैं था करने का प्रयत्न! –

+0

ग्रेट, मैं बस इसके लिए देख रहा था, बहुत बहुत धन्यवाद! – vtortola

+0

धन्यवाद, यह मेरे लिए बहुत उपयोगी है – MNR

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