Вопрос

У меня есть веб-приложение, над которым я работаю (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="сервер" в коде

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top