Имя «controlname» не существует в текущем контексте - PullRequest
70 голосов
/ 01 апреля 2009

У меня есть веб-приложение, над которым я работаю (ASP.NET2.0 с C #, используя VS2005). Все работало нормально, и внезапно я получаю сообщение об ошибке:

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

и 43 других типа за каждый раз, когда я использовал элемент управления в моем коде позади страницы.

Это происходит только на 1 странице. И это похоже на то, что кодовый код не распознает элементы управления. Другая интересная вещь заключается в том, что intellisense также не получает никаких элементов управления ..

Я пытался очистить файл решения, удалить файл obj, исключить файлы из проекта, затем повторно добавить их, закрыть VS и перезапустить его, и даже перезагрузить компьютер, но ни один из них не помог.

Ответы [ 17 ]

114 голосов
/ 30 декабря 2009

Я знаю, что это старый вопрос, но у меня была похожая проблема, и я хотел опубликовать свое решение на случай, если оно может принести пользу кому-то еще Я столкнулся с проблемой во время обучения использованию:

  • ASP.NET 3.5
  • C #
  • VS2008

Я пытался создать страницу с поддержкой AJAX (загляните в руководство по использованию объекта ScriptManager, если вы не знакомы с этим). Я попытался получить доступ к элементам HTML на странице через код C #, и я получил сообщение об ошибке, в котором указывалось, что идентификатор для значения HTML ID «не существует в текущем контексте».

Чтобы решить эту проблему, я должен был сделать следующее:

1. Запустить на сервере

Чтобы получить доступ к элементу HTML как к переменной в коде C #, в теге элемента HTML в файле aspx должно быть указано следующее значение:

runat="server"

Некоторые объекты на панели инструментов в IDE Visual Studio не включают это значение автоматически при добавлении на страницу.

2. Восстановить автоматически сгенерированный файл C #:

  • В обозревателе решений под файлом aspx должно быть два файла: * .aspx.cs и * .aspx.designer.cs. Файл конструктора генерируется автоматически.
  • Удалить существующий файл * .aspx.designer.cs. Убедитесь, что вы удалили только файл designer . Не удаляйте другой, потому что он содержит ваш код C # для страницы.
  • Щелкните правой кнопкой мыши по родительскому файлу aspx. Во всплывающем меню выберите Преобразовать в веб-приложение .

Теперь элемент должен быть доступен в файле кода C #.

41 голосов
/ 01 апреля 2009

Проверьте свой код за именем файла и свойством Inherits в директиве @Page, убедитесь, что они совпадают.

33 голосов
/ 13 октября 2009

исключают любые другие страницы, которые ссылаются на тот же файл с выделенным кодом, например, старую страницу, которую вы скопировали и вставили.

13 голосов
/ 13 июля 2011

У меня была такая же проблема. Оказывается, в моем проекте были и «MyPage.aspx», и «Копия MyPage.aspx».

3 голосов
/ 27 апреля 2011

Кроме того, убедитесь, что у вас нет файлов, которые случайно пытаются унаследовать или определить тот же (частичный) класс, что и другие файлы. Обратите внимание, что эти файлы могут показаться не связанными с файлами, где ошибка фактически возникла!

1 голос
/ 09 ноября 2016

Я исправил это в своем проекте, создав резервную копию текущих файлов (чтобы у меня остался мой код), удалив текущий aspx (и дочерние страницы), создав новый и скопировав содержимое файлов резервных копий в новый файлы.

1 голос
/ 09 мая 2014

У меня была та же проблема, моя проблема не заключалась в пробеле между двумя атрибутами "

AutoGenerateColumns="False"DataKeyNames="ProductID"

вместо

AutoGenerateColumns="False" DataKeyNames="ProductID"
1 голос
/ 02 мая 2013

Я получаю ту же ошибку после внесения изменений в мой контекст данных. Но я сталкиваюсь с чем-то, что мне незнакомо. Я привыкла публиковать свои файлы вручную. Обычно, когда я делаю это, в папке публикации не появляется папка App_Code. Однако я начал использовать публикацию VS 12, которая напрямую публикуется с вашей помощью на веб-сервере. И тогда я получаю сообщение об ошибке скомпилированного приложения. Затем я удаляю папку app_code, она работала. Но затем он дал мне ошибку контекста данных, которую вы получаете. Поэтому я просто удалил все файлы и снова запустил публикацию без каких-либо ограничений (каждая папка и файл будут опубликованы), после чего все заработало

1 голос
/ 08 июня 2012

Я столкнулся с той же ошибкой, за исключением того, что это была ошибка WPF. Я переставлял проекты и определил элемент управления следующим образом:

<local:CustomControl Name="Custom" /> 

В своем коде я попытался использовать Custom.Blah, но получил ошибку:

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

Что меня подвело, изменив свой контроль в Xaml на это:

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

Надеюсь, это кому-нибудь поможет!

1 голос
/ 16 мая 2017

эта ошибка часто возникает, когда вы пропускаете runat="server".

...