2012-05-26 14 views
27

मैं Asp.Net MVC3 में एक नौसिखिया हूं। किसी को भी व्याख्या कर सकते हैं कृपया क्या इस कोड का क्या मतलब है:प्रतिपादन का यह कोड क्या है?

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

ScottGu के लेख पर:

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

वहाँ RenderSection का एक उदाहरण है, लेकिन यह @section को परिभाषित करता है और फिर कहीं @RenderSection प्रयोग किया जाता है। इस मामले में सेक्शन हेड को परिभाषित किया गया है और उसमें ही उसी सिर को प्रस्तुत किया जा रहा है जो मुझे भ्रमित करता है।

रेंडरसेक्शन क्या करता है और मुझे यहां क्या प्रदान किया जा रहा है?

उत्तर

34

स्कॉट "RenderSection()" के लिए एक बिंदु

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

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

तो सब कुछ में, आपके पास "हेड" नामक एक अनुभाग है जो "हेड" नामक एक अनुभाग को एक दृश्य में प्रस्तुत करता है जो नीचे/घोंसला है।

संपादित करें: देखने के लिए मैं नेस्टेड दृश्यों के साथ क्या मतलब http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx पर एक नजर है - लेकिन ध्यान दें कि इस लेख अब एक वर्ष से अधिक पुराना है।

MasterLayout:

@RenderSection("head", false) 

SubLayout:

@{ 
    Layout = "~/Views/_MasterLayout.cshtml"; 
} 
@section head 
{ 
    RenderSection("head") 
} 

सामग्री:

@{ 
    Layout = "~/Views/_SubLayout.cshtml"; 
} 
@section head 
{ 
    <title>Content-Layout</title> 
} 
13

आप अनुभाग को एक दृश्य में परिभाषित करते हैं और इसे _Layout.cshtml में प्रस्तुत करते हैं।

अपने लेआउट में (गुरु) पेज जगह इस:

@RenderSection("head", false) 

आपके विचार पेज जगह में इस:

@section head { 

PUT VIEW SPECIFIC CODE HERE 
} 
यहाँ

"सिर" खंड है कि आप में परिभाषित कर सकते हैं का नाम है आपके पृष्ठ देखें।

कुछ हद तक ContentPlaceHolder जैसा कि हम एएसपीनेट वेबफॉर्म में उपयोग करते हैं।

+1

मुझे लगता है कि समझते हैं लेकिन कोड मैं पोस्ट '@section' सिर को परिभाषित करता है और अंदर धनुकोष्ठक फिर से कॉल RenderSection। बाल पृष्ठों में '@ सेक्शन' सिर परिभाषित नहीं किया जाना चाहिए? –

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