Имя 'controlname' не существует в текущем контексте
У меня есть веб-приложение, над которым я работаю (ASP.NET2.0 С C#, используя VS2005). Все работало нормально, и вдруг я получаю ошибку:
Error 1 The name 'Label1' does not exist in the current context
и 43 других типа для каждого раза, когда я использовал элемент управления в своем коде на странице.
это происходит только для 1 страницы. И это как если бы codebehind не распознает элементы управления. Еще одна интересная вещь заключается в том, что intellisense не берет ни одного из элементов управления любой..
Я попытался очистить файл решения, удалить файл obj, исключить файлы из проекта, а затем повторно добавить их, закрыть VS и перезапустить его и даже перезагрузить компьютер, но ни один из них не работал.
17 ответов:
проверьте свой код за именем файла и наследует свойство в директиве @Page, убедитесь, что они оба совпадают.
Я знаю, что это старый вопрос, но у меня была аналогичная проблема и я хотел опубликовать свое решение, если это может принести пользу кому-то еще. Я столкнулся с проблемой, когда учился использовать:
- ASP.NET 3.5
- C#
- VS2008
Я пытался создать страницу с поддержкой AJAX (посмотрите учебник об использовании объекта ScriptManager, если вы не знакомы с этим). Я попытался получить доступ к HTML-элементам на странице с помощью кода C# , и я получаю сообщение об ошибке, указывающее идентификатор для значения идентификатора HTML " не существует в текущем контексте."
чтобы решить ее, я должен был сделать следующее:
1. Запуск на сервере
чтобы получить доступ к HTML-элементу в качестве переменной в коде C#, в теге HTML-элемента в файле aspx должно быть помещено следующее значение:
runat="server"
некоторые объекты на панели инструментов в Visual Studio интегрированная среда разработки автоматически не будет включаться при добавлении на страницу.
2. Восстановите автоматически сгенерированный файл C#:
- в обозревателе решений под файлом aspx должно быть два файла: *.aspx.cs и *.aspx.дизайнер.цезий. Файл конструктора создается автоматически.
- удалить существующий *.aspx.дизайнер.cs-файл. Убедитесь, что вы только удалить дизайнер. Не удаляйте другой, потому что он содержит ваш код C# для страница.
- щелкните правой кнопкой мыши на родительском файле aspx. Во всплывающем меню выберите преобразовать в веб-приложение.
теперь элемент должен быть доступен в файле C# кода.
исключите любые другие страницы, которые ссылаются на тот же файл кода, например более старую страницу, которую вы скопировали и вставили.
У меня была та же проблема. Оказывается, у меня были оба "MyPage.aspx " и " копия MyPage.aspx " в моем проекте.
кроме того, убедитесь, что у вас нет файлов, которые случайно пытаются наследовать или определить тот же (частичный) класс, что и другие файлы. Обратите внимание, что эти файлы могут казаться не связанными с файлами, где ошибка действительно появилась!
я столкнулся с этой же ошибкой, за исключением того, что это была ошибка WPF. Я перестраивал проекты и имел контроль, определенный следующим образом:
<local:CustomControl Name="Custom" />
в моем коде я попытался использовать Custom.Бла, но я получил ошибку:
The name 'Custom' does not exist in the current context
что сделал трюк для меня было изменение моего элемента управления в Xaml на это:
<local:CustomControl x:Name="Custom" />
надеюсь, что это поможет кому-то там!
Я получаю ту же ошибку после внесения изменений в мой контекст данных. Но я сталкиваюсь с чем-то незнакомым. Я привык публиковать свои файлы вручную. Обычно, когда я это делаю, в папке публикации не появляется папка App_Code. Bu я начал использовать VS 12 publishing, который напрямую публикует с вашей помощью веб-сервер. И тогда я получаю ошибку о том, что предварительно скомпилированное приложение. Затем я удаляю папку app_code, в которой она работала. Но потом он дал мне ошибку контекста данных, что вы получаете. Поэтому я просто удалил все файлы и снова запустил публикацию без ограничений на файлы (каждая папка и файл будут опубликованы), тогда это сработало как шарм.
у меня была та же проблема, моя проблема не было пространства между двумя атрибутами"
AutoGenerateColumns="False"DataKeyNames="ProductID"
вместо
AutoGenerateColumns="False" DataKeyNames="ProductID"
я исправил это в своем проекте, создав резервные копии текущих файлов (поэтому у меня все еще был мой код), удалив текущий aspx (и дочерние страницы), создав новый и скопировав содержимое резервных файлов в новые файлы.
вариант решения #2, предложенный выше, работает для приложений windows forms, а не для веб-приложений aspx. У меня аналогичная ошибка в веб-приложении, я решил эту проблему, удалив файл, где я пользовательский элемент управления с тем же именем, этот файл aspx, который на самом деле был резервной копии файлов и не обращаются ни в процессе, но все равно это вызвало ошибку, потому что имя пользователя управления зарегистрированы в файл резервной копии был назван точно так же на aspx-файл файле, на который дана ссылка в поток процесса. Так Что Я удалил файл резервной копии и построил решение, сборка прошла успешно.
надеюсь, что это поможет кому-то в подобном сценарии.
Виджайя Лакшми.
У меня была та же проблема, так как я пытался повторно создать файл aspx из проекта visual studio 2010, поэтому элементы управления имели свойство clientidmode="Static". Когда это удалено, это было решено.
У меня была аналогичная проблема при настройке с повторителем после преобразования его из DataList.
проблема была в том, что я случайно объединил 2 атрибута при удалении ненужного.
<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS"> . . . </asp:Repeater>
и это предотвратило генерацию ретранслятора в файле проекта.
У меня было такое же сообщение об ошибке. Мой код был безошибочным и работал отлично, затем я решил вернуться и переименовать одну из моих кнопок, и вдруг он дает мне ошибку компиляции, сопровождаемую этим синим волнистым подчеркиванием, говорящим, что элемент управления не существует в текущем контексте...
оказывается, Visual Studio была тупой, так как проблема была связана с файлами резервной копии, которые я сделал из своего aspx.классе по информатике. Я удалил их,и ошибки ушли.
Я столкнулся с этой же проблемой. По-видимому, вы не должны называть класс В BLL тем же именем, что и один из них .aspx/.aspx.cs файлы. Я думал, что они не будут в том же объеме и т. д. но это слишком сильно повлияло на внутреннюю работу Visual Studio. Я немного удивлен, что нет ничего, чтобы удержать вас от этого, если это приведет к такому типу ошибки. В любом случае, просто удалите его .aspx/.aspx.cs файлы и перестроить свой проект. Затем верните их под другим именем. Вы можете скопируйте / вставьте свой код в другой редактор, если вы не хотите перепечатывать его обратно.
в моем случае, когда я создал веб-форму, она была названа как WebForm1.aspx и соответствующие имена (WebForm1). Письмо, я переименовал это в что-то другое. Я переименовал вручную почти во всех местах, но одно место в файле конструктора все еще показывало его как "WebForm1".
Я тоже изменил это и избавился от этой ошибки.