2011-02-17 20 views
7

तो समस्या निम्न है:यह सुनिश्चित करने के लिए कि जेएस को एएसएक्स फ़ाइल में शामिल किया गया है?

मेरे पास अपना उपयोगकर्ता नियंत्रण है। जिसमें स्क्रिप्ट टैग में कुछ जावास्क्रिप्ट फ़ाइल शामिल है, जैसे

<script type="text/javascript" src="../somefile.js" ></script> 

या कुछ जावास्क्रिप्ट कोड सीधे एसीएक्स पृष्ठ पर शामिल हैं। सब कुछ काम करता है अगर मैं कहीं भी एएसपीएक्स मार्कअप में इस नियंत्रण को रखता हूं। लेकिन अगर मैं इस नियंत्रण को पेजबैक पर कुछ अपडेटपेनल प्लेस धारक को गतिशील रूप से जोड़ता हूं (यह तर्क है कि मैं बदल नहीं सकता), नियंत्रण स्वयं को प्रस्तुत करता है और फिर मुझे जेएस त्रुटि संदेश मिलता है, जो कहता है कि कुछfile.js में रखे गए फ़ंक्शन हैं परिभाषित नहीं/शून्य हैं। ये क्यों हो रहा है ? क्या इस मामले में जेएस को मजबूर करने के लिए वैसे भी है।

पर्याप्त विशिष्ट नहीं होने के लिए खेद है लेकिन कोड राशि बहुत बड़ी है और मैं एक ही त्रुटि के साथ सरलीकृत उदाहरण प्रदान करने में सक्षम नहीं था।

लिपि शामिल है लेकिन किसी भी तरह से कार्यों को परिभाषित नहीं किया गया है। मैं जेएस के लिए नौसिखिया हूँ, तो क्या यह संभव है कि सिर्फ स्क्रिप्ट शामिल है लेकिन निष्पादित नहीं है, इसलिए कार्यों को घोषित नहीं किया गया है ???

दिलचस्प यह है कि अगर कुछ पेज पर मेरा कस्टम नियंत्रण एएसपीएक्स में घोषित किया जाता है। कुछ और उदाहरणों को गतिशील रूप से कोई समस्या नहीं आती है।

उत्तर

15

अपने नियंत्रण का भार भी घटना में, कुछ इस तरह करते हैं: अगर नियंत्रण aspx फ़ाइल में घोषित किया जाता है

if (!Page.ClientScript.IsClientScriptIncludeRegistered("keyName")) 
    Page.ClientScript.RegisterClientScriptInclude("keyName", 
     Page.ResolveUrl("~/Scripts/MyJavaScript.js")); 
0

क्या आप सुनिश्चित हैं कि आपकी जेएस फ़ाइल लोड हो रही है? यह हो सकता है कि फ़ाइल सही स्थान पर नहीं है - पथ में ../ का उपयोग न करें क्योंकि यह सापेक्ष है और यदि आप इसे साझा कर रहे हैं तो गलत हो सकता है और पृष्ठ सभी एक ही गहराई में नहीं हैं:

कुछ इस तरह करते हैं

:

<script type="text/javascript" src="/Scripts/somefile.js" ></script> 
+0

जे एस फ़ाइल लोड कर रहा है। मुझे यह समस्या केवल तभी मिलती है जब कुछ नियंत्रण किसी भी पोस्टबैक पर अपडेटपेनल के अंदर कुछ प्लेसहोल्डर में जोड़ा जाता है। मैंने उन स्क्रिप्ट को सीधे एसीएक्स फ़ाइल में शामिल करने का भी प्रयास किया है। काम नहीं करता। – danyloid

2

कैसे इस तरह ScriptManager.Scripts में शामिल के बारे में?

<asp:ScriptManager runat="server" ID="scriptManager1" EnablePageMethods="true"> 
     <Scripts> 
      <asp:ScriptReference Path="~/somefile.js" /> 
     </Scripts> 
</asp:ScriptManager> 

संपादित करें:

ascx आप कुछ इस तरह कर सकता है से (OnPreRender होगा जहां मैं इस कोशिश करेंगे):

ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("~/somefile.js")); 

वैकल्पिक रूप से, आप की कोशिश कर सकते

ScriptManager.GetCurrent(Page).RegisterClientScriptInclude(
      this, 
      typeof(Page), 
      "UniqueScriptKey", 
      ResolveClientUrl("~/somefile.js")); 

Reference link

+0

क्या मैं इसे किसी भी तरह से पुनर्प्राप्त कर सकता हूं? यह मास्टर पेज पर घोषित किया गया है जिसे मैं संशोधित नहीं कर सकता। मैंने aspx.cs फ़ाइल में ClientScriptManager के माध्यम से फ़ाइल को पंजीकृत करने का प्रयास किया है लेकिन यह काम नहीं कर सका। – danyloid

+0

मैंने स्क्रिप्ट जोड़ने के लिए एक और तरीका जोड़ा है। संपादित देखें। –

+0

इस एमएसडीएन पेज में भी उदाहरण देखें। http://msdn.microsoft.com/us-en/library/system.web.ui.scriptreference.aspx –

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

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