У меня есть веб-приложение, над которым я работаю (ASP.NET2.0 с С#, используя VS2005). Все работало нормально, и внезапно я получаю сообщение об ошибке:
Error 1 The name 'Label1' does not exist in the current context
и 43 других типа для каждого раза, когда я использовал элемент управления в своем коде страницы.
Это происходит только для 1 страницы. И это так, как будто codebehind не распознает элементы управления. Еще одна интересная вещь заключается в том, что intellisense не подбирает ни один из элементов управления.
Я попытался очистить файл решения, удалить файл obj, исключить файлы из проекта, затем повторно добавить их, закрыть VS и перезапустить его, и даже перезагрузить компьютер, но ни один из них не сработал.
Ответ 1
Проверьте свой код за именем файла и свойство Inherits в директиве @Page, убедитесь, что оба они совпадают.
Ответ 2
Я знаю, что это старый вопрос, но у меня была аналогичная проблема, и я хотел опубликовать свое решение, если оно может принести пользу кому-то другому. Я столкнулся с проблемой во время обучения:
Я пытался создать страницу с поддержкой AJAX (загляните в учебник об использовании объекта ScriptManager, если вы не знакомы с этим). Я попытался получить доступ к элементам HTML на странице с помощью кода С#, и я получил сообщение об ошибке, указывающее, что идентификатор значения HTML ID "не существует в текущем контексте".
Чтобы решить эту проблему, мне пришлось сделать следующее:
1. Запуск на сервере
Чтобы получить доступ к элементу HTML как переменной в коде С#, в теге HTML файла в файле aspx должно быть указано следующее значение:
runat="server"
Некоторые объекты в панели инструментов в среде Visual Studio IDE автоматически не включают это значение при добавлении на страницу.
2. Восстановите автоматически сгенерированный файл С#:
- В обозревателе решений в файле aspx должно быть два файла: *.aspx.cs и *.aspx.designer.cs. Файл конструктора автоматически генерируется.
- Удалить существующий файл *.aspx.designer.cs. Убедитесь, что вы удалили только файл designer. Не удаляйте другой, потому что он содержит ваш код С# для страницы.
- Щелкните правой кнопкой мыши на родительском aspx файле. Во всплывающем меню выберите Преобразовать в веб-приложение.
Теперь элемент должен быть доступен в файле кода С#.
Ответ 3
исключить любые другие страницы, которые ссылаются на один и тот же файл с кодом, например старую страницу, которую вы скопировали и вставляли.
Ответ 4
У меня была та же проблема. Оказывается, у меня были оба "MyPage.aspx" и "Copy of MyPage.aspx" в моем проекте.
Ответ 5
Кроме того, убедитесь, что у вас нет файлов, которые случайно пытаются наследовать или определять тот же (частичный) класс, что и другие файлы. Обратите внимание, что эти файлы могут казаться несвязанными с файлами, где действительно появилась ошибка!
Ответ 6
Я столкнулся с этой же ошибкой, за исключением того, что это была ошибка WPF. Я перестраивал проекты и имел контроль, определенный следующим образом:
<local:CustomControl Name="Custom" />
В моем коде позади я попытался использовать Custom.Blah, но я получил ошибку:
The name 'Custom' does not exist in the current context
Какая уловка для меня изменила мой контроль в Xaml:
<local:CustomControl x:Name="Custom" />
Надеюсь, это поможет кому-то там!
Ответ 7
Я получаю ту же ошибку после того, как я ввел изменения в свой контекст данных. Но я сталкиваюсь с чем-то, с чем я не знаком. Я привык публиковать свои файлы вручную. Обычно, когда я делаю, что в папке публикации нет папки App_Code. Bu я начал использовать публикацию VS 12, которая напрямую публикуется с вашей помощью на веб-сервере. И затем я получаю сообщение об ошибке в прекомпилированном приложении. Затем я удаляю папку app_code, в которой он работал. Но тогда это дало мне ошибку "Контекст данных", которую вы получаете. Поэтому я просто удалил все файлы и снова запустил публикацию без ограничений файлов (каждая папка и файл будет опубликован), тогда она работала как шарм.
Ответ 8
У меня была такая же проблема, моя проблема заключалась в отсутствии пробела между двумя атрибутами "
AutoGenerateColumns="False"DataKeyNames="ProductID"
вместо
AutoGenerateColumns="False" DataKeyNames="ProductID"
Ответ 9
эта ошибка часто возникает, когда вы пропускаете runat="server"
.
Ответ 10
Вариант решения № 2, предложенный выше, работает для приложений форм Windows, а не для приложения web aspx. Я получил аналогичную ошибку в веб-приложении, я решил это, удалив файл, в котором у меня был пользовательский элемент управления с тем же именем, этот файл aspx был фактически файлом резервной копии и нигде не упоминался в этом процессе, но все же он вызвал ошибку, потому что имя пользовательского элемента управления, зарегистрированное в файле резервной копии, было названо точно таким же образом в файле aspx, на который ссылались в потоке процесса. Таким образом, я удалил файл резервной копии и построил решение, построив его.
Надеюсь, что это поможет некоторым в подобном сценарии.
Виджая Лакшми.
Ответ 11
У меня была такая же проблема, так как я пытался транслировать файл aspx из проекта visual studio 2010, поэтому элементы управления имели свойство clientidmode = "Static". Когда это будет удалено, оно будет разрешено.
Ответ 12
У меня была аналогичная проблема при настройке с Repeater после его преобразования из DataList.
Проблема заключалась в том, что я случайно объединил 2 атрибута при удалении ненужного.
<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS">
.
.
.
</asp:Repeater>
И это помешало генерации репитера в файле дизайна.
Ответ 13
У меня было такое же сообщение об ошибке. Мой код был безошибочным и работал отлично, тогда я решил вернуться и переименовать одну из моих кнопок, и вдруг это дало мне ошибку компиляции, сопровождаемую синей подчеркнутой краской, в которой говорилось, что элемент управления не существует в текущем контексте...
Похоже, Visual Studio была немой, так как проблема была связана с файлами резервных копий, которые я сделал из моего класса aspx.cs. Я удалил их, и ошибки исчезли.
Ответ 14
Я столкнулся с этой проблемой. По-видимому, вы не должны называть класс в BLL тем же именем, что и один из файлов .aspx/.aspx.cs. Я думал, что они не будут в одном и том же объеме и т.д., Но он слишком много перепутал с внутренними разработками Visual Studio. Я немного удивлен, что вам нечего делать, если это приведет к возникновению такого типа ошибок. В любом случае, просто удалите файлы .aspx/.aspx.cs и перестройте свой проект. Затем верните их под другим именем. Вы можете скопировать/вставить свой код в другой редактор, если вы не хотите повторно вводить его обратно.
Ответ 15
В моем случае, когда я создал веб-форму, он был назван WebForm1.aspx и соответствующими именами (WebForm1). Письмо, я переименовал это в нечто другое. Я переименовал вручную практически во все места, но одно место в файле дизайнера все еще показывало его как "WebForm1".
Я тоже изменил это и избавился от этой ошибки.
Ответ 16
Я исправил это в своем проекте, создав резервную копию текущих файлов (так что у меня все еще был код), удалив текущие aspx (и дочерние страницы), создав новый и скопировав содержимое файлов резервных копий в новый файлы.