Имя 'controlname' не существует в текущем контексте
-
22-08-2019 - |
Вопрос
У меня есть веб-приложение, над которым я работаю (ASP.NET2.0 с C #, используя VS2005).Все работало нормально, и вдруг я получаю сообщение об ошибке:
Error 1 The name 'Label1' does not exist in the current context
и 43 других подобных элемента за каждый раз, когда я использовал элемент управления в моей кодовой части страницы.
Это происходит только для 1 страницы.И это похоже на то, как если бы codebehind не распознал элементы управления.Еще одна интересная вещь заключается в том, что intellisense также не распознает ни один из элементов управления..
Я пытался очистить файл решения, удалить obj-файл, исключить файлы из проекта, затем повторно добавить их, закрыть VS и перезапустить его, и даже перезагрузить свой компьютер, но ничего из этого не сработало.
Решение
Проверьте свой код за именем файла и Наследует свойство в директиве @Page, убедитесь, что они оба совпадают.
Другие советы
Я знаю, что это старый вопрос, но у меня была похожая проблема, и я хотел опубликовать свое решение на случай, если оно может принести пользу кому-то другому.Я столкнулся с этой проблемой, когда учился использовать:
- ASP.NET 3.5 .
- C#
- ВС2008
Я пытался создать страницу с поддержкой AJAX (посмотрите руководство по использованию объекта ScriptManager, если вы не знакомы с этим).Я попытался получить доступ к HTML-элементам на странице с помощью кода C #, и я получал сообщение об ошибке, в котором указывалось, что идентификатор для значения HTML ID "не существует в текущем контексте".
Чтобы решить эту проблему, мне пришлось сделать следующее:
1.Запуск на сервере
Чтобы получить доступ к HTML-элементу в качестве переменной в коде C #, следующее значение должно быть помещено в тег HTML-элемента в aspx-файле:
runat="server"
Некоторые объекты на панели инструментов в среде разработки Visual Studio не включают это значение автоматически при добавлении на страницу.
2.Восстановите автоматически сгенерированный файл C #:
- В обозревателе решений под файлом aspx должно быть два файла:*.aspx.cs и *.aspx.designer.cs.Файл конструктора генерируется автоматически.
- Удалите существующий файл *.aspx.designer.cs.Убедитесь, что вы удаляете только дизайнер файл.Не удаляйте другой, потому что он содержит ваш C #-код для страницы.
- Щелкните правой кнопкой мыши на родительском aspx-файле.Во всплывающем меню выберите Преобразовать в веб-приложение.
Теперь элемент должен быть доступен в файле C # code.
исключите любые другие страницы, которые ссылаются на тот же файл с исходным кодом, например, более старую страницу, которую вы скопировали и вставили.
У меня была такая же проблема.Оказывается, в моем проекте были как "MyPage.aspx", так и "Копия MyPage.aspx".
Также убедитесь, что у вас нет файлов, которые случайно пытаются наследовать или определить тот же (частичный) класс, что и другие файлы.Обратите внимание, что эти файлы могут показаться не связанными с файлами, в которых на самом деле появилась ошибка!
Я столкнулся с такой же ошибкой, за исключением того, что это была ошибка WPF.Я перестраивал проекты, и у меня был элемент управления, определенный следующим образом:
<local:CustomControl Name="Custom" />
В моем коде позади я пытался использовать пользовательский.Бла, но я получил ошибку:
The name 'Custom' does not exist in the current context
Что помогло мне, так это изменить мой элемент управления в Xaml на этот:
<local:CustomControl x:Name="Custom" />
Надеюсь, это кому-то там поможет!
Я получаю ту же ошибку после того, как внес изменения в свой контекст данных.Но я сталкиваюсь с чем-то, с чем я незнаком.Я привык публиковать свои файлы вручную.Обычно, когда я это делаю, в папке публикации не появляется папка App_Code.Но я начал использовать публикацию VS 12, которая напрямую публикуется с вашей помощью на веб-сервере.И затем я получаю сообщение об ошибке о том, что приложение предварительно скомпилировано.Затем я удаляю папку app_code, это сработало.Но затем это выдало мне ошибку контекста данных, которую вы получаете.Поэтому я просто удалил все файлы и снова запустил публикацию без каких-либо ограничений на файлы (будут опубликованы все папки и файлы), после чего все сработало как по волшебству.
У меня была такая же проблема, моя проблема заключалась в отсутствии пробела между двумя атрибутами "
AutoGenerateColumns="False"DataKeyNames="ProductID"
вместо того , чтобы
AutoGenerateColumns="False" DataKeyNames="ProductID"
Я исправил это в своем проекте, создав резервную копию текущих файлов (так что у меня все еще был мой код), удалив текущий aspx (и дочерние страницы), создав новый и скопировав содержимое резервных копий в новые файлы.
эта ошибка часто возникает, когда вы пропускаете runat="server"
.
Вариант решения № 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.cs.Я удалил их, и ошибки исчезли.
Я столкнулся с такой же проблемой.Очевидно, вам не следует вызывать класс в BLL с тем же именем, что и у одного из файлов .aspx /.aspx.cs.Я думал, что они не будут находиться в одном и том же объеме и т.д.но это слишком сильно мешало внутренней работе Visual Studio.Я немного удивлен, что нет ничего, что могло бы помешать вам сделать это, если это приведет к ошибке такого типа.В любом случае, просто удалите файлы .aspx /.aspx.cs и перестройте свой проект.Затем верните их обратно под другим именем.Вы можете скопировать / вставить свой код в другой редактор, если не хотите перепечатывать его обратно.
В моем случае, когда я создавал веб-форму, она была названа WebForm1.aspx и имела соответствующие имена (WebForm1).Письмо, я переименовал его во что-то другое.Я переименовал вручную почти во всех местах, но одно место в файле конструктора по-прежнему отображало его как "WebForm1".
Я тоже изменил это и избавился от этой ошибки.
1) Проверьте свойство CodeFile в <%@Page CodeFile="filename.aspx.cs" %> на странице "filename.aspx" ваш код, стоящий за именем файла, и имя этого свойства должны совпадать.
2)вы можете пропустить runat="сервер" в коде