पुराना सवाल ... लेकिन मैं सिर्फ इस मुद्दे में भाग गया और इस # 1 पोस्ट कि रखा था Google पर आ रहा है, तो आंकड़ा मैं अपना जवाब जोड़ूंगा क्योंकि अन्य मेरे मामले में काम नहीं करते थे।
यहाँ है जब एक नियमित रूप से <asp:Content
कार्य नहीं करेगा कि कैसे मैं यह किया है (हालांकि सामान्य उपयोग में, इस सवाल का जवाब @JayC तुम कैसे करते है):
<asp:ContentPlaceHolder ID="ScriptsPlace" runat="server"></asp:ContentPlaceHolder>
:
masterpage इस ContentPlaceHolder
है
को उपयोगकर्ता नियंत्रण से गतिशील रूप से कुछ जावास्क्रिप्ट जोड़ना पड़ा। ContentPlaceHolder
उपयोग करने के लिए कोशिश कर रहा है सीधे इस त्रुटि देता है:
Parser Error Message: Content controls have to be top-level controls in a content page or a nested master page that references a master page.
तो मैं से कोड-पीछे स्क्रिप्ट जोड़ना चाहते थे।यहाँ .ascx
फ़ाइल के लिए पृष्ठ लोड है:
protected void Page_Load(object sender, EventArgs e)
{
ContentPlaceHolder c = Page.Master.FindControl("ScriptsPlace") as ContentPlaceHolder;
if (c != null)
{
LiteralControl l = new LiteralControl();
l.Text="<script type=\"text/javascript\">$(document).ready(function() {js stuff;});</script>";
c.Controls.Add(l);
}
}
अद्यतन: तो यह पता चला है कि मैं और अधिक स्थानों में इस का उपयोग करने की तुलना में मैं उम्मीद थी, और एक तरीका है कि और अधिक लचीला/पठनीय था का उपयोग कर समाप्त हो गया । उपयोगकर्ता नियंत्रण में ही, मैंने बस जावास्क्रिप्ट और कुछ भी लपेट लिया जिसे नियमित div
के साथ स्थानांतरित करने की आवश्यकता थी।
<div id="_jsDiv" runat="server">
$(document).ready(function() {
//js stuff
});
Other server controls or HTML junk
</div>
और फिर कोड के पीछे है कि div लगता है, और फिर इसे ContentPlaceHolder
में आ जाएगा।
protected void Page_Load(object sender, EventArgs e)
{
ContentPlaceHolder c = Page.Master.FindControl("ScriptsPlace") as ContentPlaceHolder;
HtmlGenericCOntrol jsDiv = this.FindControl("_jsDiv") as HtmlGenericControl;
if (c != null && jsDiv != null)
{
c.Controls.Add(jsDiv);
}
}
मैं वास्तव में एक कस्टम उपयोगकर्ता नियंत्रण में इस कोड को रखा, और मैं सिर्फ अपनी नियमित उपयोगकर्ता नियंत्रण, कस्टम उपयोगकर्ता नियंत्रण से विरासत इसलिए एक बार मैं एक <div id="_jsDiv" runat="server">
साथ जावास्क्रिप्ट/आदि लपेट है, कस्टम उपयोगकर्ता नियंत्रण लेता है बाकी की देखभाल और मुझे उपयोगकर्ता नियंत्रण के पीछे कोड में कुछ भी करने की ज़रूरत नहीं है।
मुझे खेद है, जो वास्तव में मेरी समस्या का समाधान नहीं करता है। मुझे उस सामग्री क्षेत्र में प्रोग्रामिंग के लिए कुछ कोड चाहिए, मान लें, कुछ टेक्स्ट, उस सामग्री क्षेत्र में, क्योंकि मैं इसे वेब पेज कोड कोड से एक्सेस नहीं कर सकता। मेरे पास default.aspx पृष्ठ और ContentPlaceHolder ID = content1 के साथ है। डिफ़ॉल्ट रूप से .aspx.cs मैं सामग्री 1 "देख नहीं सकता"। –
मैं देखता हूं। क्या कोई कारण है कि आप अपने पृष्ठ के 'Content' क्षेत्र में प्लेसहोल्डर नहीं डाल सकते हैं? आप निश्चित रूप से उस चीज़ को जोड़ सकते हैं: – JayC
उदाहरण के लिए: 'लेबल एलबीएल = नया लेबल(); lbl.Text = "कुछ"; placeHolder.Controls.Add (एलबीएल); ' – JayC