2010-04-14 17 views
6

से गतिशील रूप से एक सीएसएस फ़ाइल जोड़ना मेरे पास कस्टम नियंत्रण है और मैं गतिशील रूप से स्टाइलशीट के लिए एक लिंक डालना चाहता हूं।एएसपी.NET सर्वर नियंत्रण

साल का सबसे अच्छा समाधान नहीं हो सकता है लेकिन इसे करने की आवश्यकता है। कोई विचार यह कैसे करना है?

हर बार जब मैं कोशिश करता हूं, पेज। हैडर शून्य है।

protected void Page_Init(object sender, EventArgs e) 
{ 
    var link = new HtmlLink(); 
    link.Href = "~/styles/main.css"; 
    link.Attributes.Add("rel", "stylesheet"); 
    link.Attributes.Add("type", "text/css"); 
    Page.Header.Controls.Add(link); 
} 

आप head टैग में एक runat="server" डाल करने के लिए आवश्यकता हो सकती है:

<head runat="server"> 
    <title>Add CSS example</title> 
</head> 
+0

पेज जीवन चक्र के दौरान किस बिंदु पर आप पेज तक पहुंचने की कोशिश कर रहे हैं। हेडर? –

उत्तर

17

यहाँ कैसे आप सामान्य रूप से एक सीएसएस प्रोग्राम के जोड़ेंगे पृष्ठ पर 10 बार नियंत्रित करें, उपरोक्त कोड को थोड़ा सा बदलें:

string styleSheet = "stylesheetName.css"; 
if (this.Page.Header.FindControl(styleSheet) == null) 
{ 
    HtmlLink cssLink = new HtmlLink(); 
    cssLink.ID = styleSheet; 
    cssLink.Href = "~/styles/" + styleSheet; 
    cssLink.Attributes.Add("rel", "stylesheet"); 
    cssLink.Attributes.Add("type", "text/css"); 
    this.Page.Header.Controls.Add(cssLink); 
} 

नियंत्रण एक आईडी देकर आप जांच सकते हैं कि यह पहले से मौजूद है या नहीं, और इसलिए सुनिश्चित करें कि आप इसे केवल एक बार जोड़ दें।

+0

समझ गया। मैं अपने मास्टरपेज के हेडर टैग में रनैट = "सर्वर" खो रहा था। :) धन्यवाद! –

+1

यदि आप अपने पृष्ठ पर 10 बार नियंत्रण जोड़ते हैं, तो यह कोई समस्या नहीं होगी? फिर सीएसएस फ़ाइल 10 बार जुड़ी होगी। – Peter

+0

@ पीटर, हाँ मुझे लगता है कि समस्याग्रस्त हो जाएगा। –

7

को जोड़ते समय कई स्टाइलशीट की समस्या से बचने के

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