2011-01-19 5 views
32

मैं कुछ दृश्यों में एक विशिष्ट स्टाइल शीट को लिंक करना चाहता हूं जो कि पहले से ही _Layout.cshtml में जुड़ा हुआ है। गैर-रेजर के लिए, मैं सामग्री स्थान धारक का उपयोग देखता हूं। मैं रेजर के लिए यह कैसे करूं?मैं एएसपी.नेट एमवीसी 3 और रेजर का उपयोग कर दृश्य-विशिष्ट <head> सामग्री कैसे देख सकता हूं?

उत्तर

45

रेजर में सामग्री प्लेसहोल्डर्स के समकक्ष अनुभाग हैं।

अपने _Layout.cshtml में:

<head> 
@RenderSection("Styles", required: false) 
</head> 
फिर अपने सामग्री पृष्ठ में

:

@section Styles { 
    <link href="@Url.Content("~/Content/StandardSize.css")" /> 
} 

एक वैकल्पिक समाधान ViewBag/ViewData में अपनी शैली डाल करने के लिए होगा:

आपके _Layout.cshtml में:

<head> 
    @foreach(string style in ViewBag.Styles ?? new string[0]) { 
     <link href="@Url.Content(style)" /> 
    } 
</head> 

और अपनी सामग्री पेज में:

@{ 
    ViewBag.Styles = new[] { "~/Content/StandardSize.css" }; 
} 

यह काम करता है क्योंकि दृश्य पेज लेआउट से पहले मार डाला जाता है।

+2

यह सिर पर दृश्य विशिष्ट स्क्रिप्ट संदर्भ जोड़ने का भी एक शानदार तरीका है। – ReinierDG

+0

वैकल्पिक समाधान उन लोगों के लिए अच्छा है जिन्होंने अभी तक अपने समाधान को रेजर का उपयोग करने में परिवर्तित नहीं किया है। धन्यवाद! – Mayo

-2

आश्चर्यजनक रूप से (मेरे लिए), asp: ContentPlaceHolder काम करता है। यद्यपि बहुत अनजान लगता है। मुझे आश्चर्य है कि क्या कोई और तरीका है?

विशेष रूप से, आप अपने दृश्य में अपने _layout.cshtml में <asp:ContentPlaceHolder ID="HeadContent" runat="server" /> और

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
    <link href="@Url.Content("~/Content/StandardSize.css")" rel="stylesheet" type="text/css" /> 
</asp:Content> 

डाल दिया।

+0

यह केवल आपको लगता है कि यह काम करता है। क्या आपने जेनरेट किए गए एचटीएमएल को देखा है? – marcind

+0

आप सही हैं। मैंने अभी देखा कि शैलियों को मैं चाहता था लेकिन मैंने HTML की जांच नहीं की थी। मैं सोच रहा था कि रेजर के साथ एक सर्वर टैग कैसे संसाधित किया जा रहा था। – JohnOpincar

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