2010-10-25 12 views
20

मैं अपनी एएसपीनेट वेबसाइट पर केवल कुछ पृष्ठों में सीएसएस संदर्भ कैसे शामिल करूं? यदि मैं अपने मास्टर पेज में संदर्भ शामिल करता हूं, तो वेबसाइट के सभी पृष्ठ सीएसएस संदर्भ साझा करते हैं।मास्टर पेजों में सीएसएस कैसे शामिल करें?

उत्तर

36

बस इसमें एक डिफ़ॉल्ट मान के साथ एक सीएसएस ContentPlaceHolder जोड़ें।

मूल रूप से, डिफ़ॉल्ट रूप से निर्दिष्ट सीएसएस फ़ाइल तब तक शामिल की जाएगी जब तक कि आप उस प्लेसहोल्डर को किसी बच्चे पृष्ठ से <asp:Content /> टैग के साथ ओवरराइड न करें।

आपका मास्टर पेज इस तरह कुछ दिखना चाहिए।

<head> 
    <asp:ContentPlaceHolder ID="Stylesheets" runat="server"> 
     <link rel="stylesheet" href="/css/master.css" type="text/css" /> 
    </asp:ContentPlaceHolder> 
</head> 
तब का उपयोग कर कि मास्टर पृष्ठ, तो आप बस है कि एक अलग स्टाइलशीट साथ ओवरराइड कर सकते हैं किसी भी पृष्ठों से

(उदाहरण) पर

<asp:Content ID="Content1" ContentPlaceHolderID="Stylesheets" runat="server"> 
    <link rel="stylesheet" href="/css/form.css" type="text/css" /> 
</asp:Content> 
+3

+1 मुझे वास्तव में इस समाधान को मेरे सुझाव से बेहतर पसंद है। मैंने पहले इसका इस्तेमाल किया है और यह एक अच्छा विकल्प है। हालांकि मैं अपना जवाब छोड़ दूंगा, क्योंकि किसी को यह उपयोगी लगेगा। –

6

आप अपनी साइट पर एक से अधिक मास्टर पेज का उपयोग कर सकते हैं।

आप नेस्टेड मास्टर पेज का भी उपयोग कर सकते हैं। शीर्ष स्तर में सामान्य साइट संरचना हो सकती है, और फिर आपके प्रत्येक अलग-अलग क्षेत्रों के लिए एक मास्टर नेस्टेड मास्टर पेज हो सकता है।

जब आप अपनी प्रोजेक्ट पर राइट क्लिक करते हैं और एड का चयन करते हैं, तो आप वेबफॉर्म के बजाय वेबकंटेंटफॉर्म विकल्प चुनते हैं। फिर आप उपयुक्त मास्टरपेज का चयन कर सकते हैं।

अपने नेस्टेड मास्टरपेज में, आपने मास्टरपेजफ़ाइल को अपने शीर्ष स्तर के मास्टरपेज के बराबर सेट किया है।

संपादित जब साथ @ मार्को के दृष्टिकोण आप निम्नलिखित हो सकता था संयुक्त ...

लाभ यहाँ ओवरराइड के सभी केवल एक बार लिखा जा करना है।

शीर्ष स्तरीय masterpage:

<head> 
    <asp:ContentPlaceHolder ID="Stylesheets" runat="server"> 
     <link rel="stylesheet" href="/css/default.css" type="text/css" /> 
    </asp:ContentPlaceHolder> 
</head> 

नेस्टेड secondOverride.css

के साथ कोई ओवरराइड

<%@ Page Language="C#" MasterPageFile="~/Site.master"%> 
//don't reference the Stylesheets ContentPlaceHolder and the default is rendered 

नेस्टेड masterpage एक override.css

<%@ Page Language="C#" MasterPageFile="~/Site.master"%> 
<asp:Content ID="Content1" ContentPlaceHolderID="Stylesheets" runat="server"> 
    <link rel="stylesheet" href="/css/override.css" type="text/css" /> 
</asp:Content> 

नेस्टेड masterpage दो के साथ साथ masterpage

<%@ Page Language="C#" MasterPageFile="~/Site.master"%> 
<asp:Content ID="Content1" ContentPlaceHolderID="Stylesheets" runat="server"> 
    <link rel="stylesheet" href="/css/secondOverride.css" type="text/css" /> 
</asp:Content> 

फिर, बस अपने किसी भी वेब फॉर्म पर उपयुक्त मास्टर पेज सेट करें।

+0

is'nt किसी भी तरह सिर्फ मेरा पेज में सीएसएस संदर्भ शामिल करने के लिए जो मास्टर पेज विरासत में मिलता है? –

+0

हां, मार्को का जवाब देखें। दो दृष्टिकोणों का संयोजन पूरी तरह से काम कर सकता है। –

+0

नेस्टेड मास्टर पेजों पर सहायक माइक्रोसॉफ्ट संदर्भ: https://msdn.microsoft.com/en-us/library/x2b3ktt7%28v=vs.140%29.aspx – Roberto

5

AboutUs.aspx मेरी स्थिति में, मैं समाधान में विभिन्न स्थानों से एक ही masterpage का इस्तेमाल किया। और चूंकि मेरी सीएसएस फ़ाइलों के संदर्भ पर ~ (टिल्ड) उपसर्ग, मैं तो जैसे संदर्भ के लिए एक response.write कहा: वहाँ

<%= ResolveUrl("~/css/myStyle.css") %> 
+0

धन्यवाद, यह मेरे लिए काम करता है लेकिन क्या आप जानते हैं कि <% = ResolveUrl ("~/xxx")%> का उपयोग करना कोई नुकसान है? – curiousBoy

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