वर्तमान संदर्भ में 'controlname' नाम मौजूद नहीं है


79

मेरे पास एक वेब एप्लिकेशन है जिस पर मैं काम कर रहा हूं (ASP.NET2.0 C # के साथ, VS2005 का उपयोग करके)। सब कुछ ठीक काम कर रहा था, और अचानक मुझे त्रुटि मिली:

Error 1 The name 'Label1' does not exist in the current context

और हर बार जब मैं पेज के कोडबाइंड में एक नियंत्रण का उपयोग करता हूं, तो 43 अन्य।

यह केवल 1 पेज के लिए हो रहा है। और ऐसा लगता है जैसे कोडबेहिंद नियंत्रणों को नहीं पहचान रहा है। एक और दिलचस्प बात यह है कि इंटेलीजेंस किसी भी नियंत्रण को नहीं उठा रहा है।

मैंने समाधान फ़ाइल को साफ करने, ओबज फ़ाइल को हटाने, प्रोजेक्ट से फ़ाइलों को बाहर करने, फिर उन्हें जोड़ने, वीएस को बंद करने और इसे फिर से शुरू करने और यहां तक ​​कि मेरे कंप्यूटर को पुनरारंभ करने की कोशिश की है, लेकिन इनमें से किसी ने भी काम नहीं किया है।


2
इसका सही उत्तर यहां पाए गए उत्तर में है: stackoverflow.com/a/1981228/168703
जोन्ह

1
इसके अलावा डिज़ाइनर में नाम स्थान की जाँच करें। कभी-कभी एक aspx पृष्ठ का नाम बदलने के बाद नामस्थान को बस डिज़ाइनर से हटा दिया जाता है।
अशरफ अबुसादा

यह अन्य .aspx फ़ाइल से नियंत्रण के लिए मार्कअप की प्रतिलिपि बनाने के बाद हो सकता है। मैंने कॉपी किए गए मार्कअप को हटा दिया और मैन्युअल रूप से कंट्रोल मार्कअप और त्रुटि को गायब कर दिया।
मिलिंद बंकर १२'१

जवाबों:


48

फ़ाइल नाम के पीछे अपने कोड की जाँच करें और @Page निर्देश पर संपत्ति इनहेरिट करें, सुनिश्चित करें कि वे दोनों मेल खाते हैं।


1
मेरे लिए भी यही चाल चली! एक नाम स्थान गलत था और जब मैंने इसे @ निर्देश में सही किया, तो त्रुटियां दूर हो गईं।
पूर्व का

1
यहाँ एक छोटे से जोड़ के साथ: सुनिश्चित करें कि आप जाँच रहे हैं कि यह पूरी तरह से योग्य वर्ग का नाम है। किसी कारण से VS ने मेरा इनहेरिट्स में बदल दिया = "कियोस्कबी" जब इसे "MyNamespace.KioskB" होने की आवश्यकता थी। यह तब तक सही लगता था जब तक कि मैं मार्कअप की तुलना किसी अन्य पेज पर नहीं करता था और देखा कि नाम स्थान भाग गया था।
केविन

117

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मुझे एक ऐसी ही समस्या थी और मैं अपने समाधान को पोस्ट करना चाहता था अगर यह किसी और को फायदा पहुंचा सकता है। उपयोग करते समय मुझे समस्या का सामना करना पड़ा:

  • ASP.NET 3.5
  • सी#
  • VS2008

मैं एक AJAX- सक्षम पृष्ठ बनाने की कोशिश कर रहा था (यदि आप इससे परिचित नहीं हैं तो ScriptManager ऑब्जेक्ट का उपयोग करने के बारे में एक ट्यूटोरियल देखें)। मैंने C # कोड के माध्यम से पृष्ठ में HTML तत्वों को एक्सेस करने की कोशिश की, और मुझे HTML ID मान के लिए पहचानकर्ता को बताते हुए एक त्रुटि हो रही थी "वर्तमान संदर्भ में मौजूद नहीं है।"

इसे हल करने के लिए, मुझे निम्नलिखित कार्य करने थे:

1. सर्वर पर चलाएँ

HTML तत्व को C # कोड में एक चर के रूप में एक्सेस करने के लिए, निम्न मान को HTML तत्व टैग में aspx फ़ाइल में रखा जाना चाहिए:

runat="server"

विज़ुअल स्टूडियो आईडीई में टूलबॉक्स में कुछ ऑब्जेक्ट पेज में जोड़े जाने पर स्वचालित रूप से इस मान को शामिल नहीं करते हैं।

2. स्वतः उत्पन्न C # फ़ाइल को पुनर्जीवित करें:

  • समाधान एक्सप्लोरर में, aspx फ़ाइल के अंतर्गत दो फ़ाइलें होनी चाहिए: * .aspx.cs और * .aspx.designer .cs। डिज़ाइनर फ़ाइल ऑटो-जेनरेट होती है।
  • मौजूदा * .aspx.designer.cs फ़ाइल हटाएँ। सुनिश्चित करें कि आप केवल डिजाइनर फ़ाइल को हटाते हैं । दूसरे को हटाएं नहीं, क्योंकि इसमें पृष्ठ के लिए आपका C # कोड है।
  • मूल aspx फ़ाइल पर राइट-क्लिक करें। पॉप-अप मेनू में, वेब एप्लिकेशन में कनवर्ट करें चुनें ।

अब तत्व सी # कोड फ़ाइल में सुलभ होना चाहिए।


2
fyi सही क्लिक "वेब एप्लिकेशन में कनवर्ट करें" विकल्प भी फ़ोल्डर्स और प्रोजेक्ट पर उपलब्ध है।
दाना बेन्सन

9
विकल्प संख्या # 2 इस मुद्दे को हल करने में मेरे लिए एकदम सही जवाब था जब मैं आज इसमें चल रहा था!
मिकसकोट 8

19
Visual Studio 2013 में FYI करें, "कन्वर्ट टू वेब एप्लिकेशन" विकल्प परियोजना मेनू में स्थानांतरित हो गया है: stackoverflow.com/questions/19561982/…
मार्क Nugent

1
डिजाइनर फाइल को डिलीट और
रिक्रिएट करना

3
यह प्रोजेक्ट मेनू का उपयोग करके काम करता है। नोट: .aspx फ़ाइल का <% @ पृष्ठ टैग को 'कोडबेहिंड' का उपयोग नहीं करना चाहिए 'कोडफाइल'
केआर

34

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


या उस दूसरे पृष्ठ पर 'लेबल 1' तत्व की प्रतिलिपि बनाएँ।
मैथिजुत्समेगेन

14

मुझे भी यही समस्या थी। यह पता चला है कि मेरे पास मेरे प्रोजेक्ट में "MyPage.aspx" और "Copy of MyPage.aspx" दोनों थे।


3

इसके अलावा, सुनिश्चित करें कि आपके पास कोई फाइल नहीं है जो गलती से अन्य फ़ाइलों के समान (आंशिक) वर्ग को इनहेरिट या परिभाषित करने का प्रयास करती है। ध्यान दें कि ये फाइलें उन फाइलों से असंबंधित हो सकती हैं जहां त्रुटि वास्तव में दिखाई दी थी!


1

मैं एक ही त्रुटि में भाग गया, सिवाय यह एक WPF त्रुटि थी। मैं परियोजनाओं को पुन: व्यवस्थित कर रहा था और इस तरह से परिभाषित एक नियंत्रण था:

<local:CustomControl Name="Custom" /> 

मेरे कोड के पीछे मैंने Custom.Blah का उपयोग करने की कोशिश की, लेकिन मुझे त्रुटि मिली:

The name 'Custom' does not exist in the current context

मेरे लिए क्या किया गया था कि मैं Xaml में अपना नियंत्रण बदल रहा था:

<local:CustomControl x:Name="Custom" />

उम्मीद है कि इससे वहां किसी को मदद मिलेगी!


1

मेरे डेटा संदर्भ के साथ परिवर्तन करने के बाद मुझे वही त्रुटि मिलती है। लेकिन मैं कुछ ऐसा करता हूं जिससे मैं अपरिचित हूं। मुझे अपनी फ़ाइलों को मैन्युअल रूप से प्रकाशित करने की आदत है। आम तौर पर जब मैं ऐसा करता हूं कि कोई App_Code फ़ोल्डर प्रकाशन फ़ोल्डर में प्रकट नहीं होता है। Bu मैंने VS 12 प्रकाशन का उपयोग करना शुरू कर दिया है जो सीधे वेब सर्वर को आपकी सहायता से प्रकाशित करता है। और फिर मैं precompiled जा रहा है आवेदन के बारे में त्रुटि हो। फिर मैंने काम किया app_code फ़ोल्डर को हटा दें। लेकिन तब इसने मुझे डेटा संदर्भ त्रुटि दी जो आपको मिल रही है। इसलिए मैंने अभी सभी फाइलों को डिलीट कर दिया है और पब्लिश को फिर से बिना किसी फाइल प्रतिबंध के चलाया है (हर फोल्डर और फाइल को पब्लिश किया जाएगा) तो यह एक आकर्षण की तरह काम करता है।


1

मेरे पास एक ही मुद्दा था, मेरी समस्या दो विशेषताओं के बीच जगह नहीं थी "

AutoGenerateColumns="False"DataKeyNames="ProductID"

के बजाय

AutoGenerateColumns="False" DataKeyNames="ProductID"

1

मैंने अपनी परियोजना में वर्तमान फ़ाइलों का बैकअप लेकर (इसलिए अभी भी मेरा कोड था), वर्तमान aspx (और चाइल्ड पेज) को हटा कर, एक नया बना दिया और बैकअप फ़ाइलों की सामग्री को नई फ़ाइलों में कॉपी कर लिया।



0

समाधान विकल्प # 2 ऊपर दिए गए काम करता है विंडोज़ के लिए काम करता है अनुप्रयोगों और नहीं वेब aspx अनुप्रयोग। मुझे वेब एप्लिकेशन में समान त्रुटि मिली, मैंने इसे एक फ़ाइल को हटाकर हल कर दिया, जहां मेरे पास उसी नाम से एक उपयोगकर्ता नियंत्रण था, यह aspx फ़ाइल वास्तव में एक बैकअप फ़ाइल थी और प्रक्रिया में कहीं भी संदर्भित नहीं थी, लेकिन फिर भी यह त्रुटि का कारण बना बैकअप फ़ाइल पर पंजीकृत उपयोगकर्ता नियंत्रण का नाम बिल्कुल उसी aspx फ़ाइल पर रखा गया था जिसे प्रक्रिया प्रवाह में संदर्भित किया गया था। इसलिए मैंने बैकअप फ़ाइल को हटा दिया और समाधान का निर्माण किया, निर्माण सफल रहा।

आशा है कि यह कुछ इसी तरह के परिदृश्य में मदद करता है।

विजया लक्ष्मी।


0

मैं एक ही मुद्दा था क्योंकि मैं एक दृश्य स्टूडियो 2010 परियोजना से aspx फ़ाइल का पुन: उत्पादन करने के लिए ट्रिंग कर रहा था ताकि नियंत्रण में क्लाइंटीडमोड = "स्टेटिक" संपत्ति थी। जब इसे हटा दिया जाता है तो इसे हल कर दिया गया था।


0

एक समान समस्या थी जब एक DataList से इसे बदलने के बाद एक पुनरावर्तक के साथ tweaking।

समस्या यह थी कि एक गलती को हटाते समय मैंने 2 विशेषताओं को एकजुट किया।

<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS">
    .
    .
    .
</asp:Repeater>

और यह डिजाइन फ़ाइल में पुनरावर्तक की पीढ़ी को रोकता है।


0

मेरे पास एक ही त्रुटि संदेश था। मेरा कोड त्रुटि-मुक्त था और पूरी तरह से काम कर रहा था, फिर मैंने वापस जाने का फैसला किया और अपने एक बटन को फिर से नाम दिया और अचानक यह मुझे एक नीली त्रुटि के साथ एक संकलन त्रुटि दे रहा है जिसमें कहा गया है कि नियंत्रण वर्तमान संदर्भ में मौजूद नहीं है ...

दृश्य स्टूडियो बंद हो रहा था गूंगा था, क्योंकि समस्या बैकअप फ़ाइलों से संबंधित थी जो मैंने अपने aspx.cs वर्ग से बनाई थी। मैंने उन को हटा दिया और त्रुटियां दूर हो गईं।


0

मैं इसी मुद्दे में भाग गया। जाहिरा तौर पर, आपको BLL में उसी नाम की .aspx / .aspx.cs फ़ाइलों में से एक वर्ग में कॉल नहीं करना चाहिए। मुझे लगा कि वे एक ही दायरे में नहीं होंगे, आदि, लेकिन इसने विजुअल स्टूडियो के आंतरिक कामकाज के साथ बहुत खिलवाड़ किया। मुझे थोड़ी हैरानी होती है कि ऐसा करने के लिए आपको कुछ नहीं करना है अगर यह उस प्रकार की त्रुटि उत्पन्न करने वाला है। वैसे भी, बस .aspx / .aspx.cs फ़ाइलें हटाएं और अपनी परियोजना का पुनर्निर्माण करें। फिर उन्हें दूसरे नाम से वापस लाएँ। आप अपने कोड को किसी अन्य संपादक में कॉपी / पेस्ट कर सकते हैं यदि आप इसे वापस नहीं लेना चाहते हैं।


0

मेरे मामले में, जब मैंने वेब फॉर्म बनाया, तो इसे WebForm1.aspx और संबंधित नामों (WebForm1) के रूप में नामित किया गया था। पत्र, मैंने नाम बदलकर कुछ और किया है। मैंने लगभग सभी स्थानों पर मैन्युअल रूप से नाम बदल दिया, लेकिन डिजाइनर फ़ाइल में एक जगह अभी भी 'WebForm1' के रूप में दिखाई दे रही थी।

मैंने उसे भी बदल दिया और इस त्रुटि से छुटकारा पा लिया।


0

1) कोड फ़ाइल को <% @ Page CodeFile = "filename.aspx.cs"%> "filename.aspx" पृष्ठ में चेक करें, फ़ाइल नाम के पीछे आपका कोड और यह संपत्ति का नाम समान होना चाहिए।

2) आपको कोड में रनैट = "सर्वर" याद आ सकता है


0

मेरे मामले में मुझे 417 के माध्यम से शिकार करना था "कंट्रोलनाम नहीं मिला" वास्तविक त्रुटि खोजने के लिए त्रुटियां: मैंने एक डीएलएल को बदल दिया था लेकिन वेब में संस्करण संख्या को अपडेट नहीं किया था ।config। इसे निर्धारित किया और सफलतापूर्वक बनाया गया, इसके 3 मिनट बाद अन्य सभी त्रुटियों ने खुद को हल कर लिया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.