Имя '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 69

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 (и дочерние страницы), создав новый и скопировав содержимое резервных файлов в новые файлы.

эта ошибка часто возникает, когда вы пропустите 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.классе по информатике. Я удалил их,и ошибки ушли.

Я столкнулся с этой же проблемой. По-видимому, вы не должны называть класс В BLL тем же именем, что и один из них .aspx/.aspx.cs файлы. Я думал, что они не будут в том же объеме и т. д. но это слишком сильно повлияло на внутреннюю работу Visual Studio. Я немного удивлен, что нет ничего, чтобы удержать вас от этого, если это приведет к такому типу ошибки. В любом случае, просто удалите его .aspx/.aspx.cs файлы и перестроить свой проект. Затем верните их под другим именем. Вы можете скопируйте / вставьте свой код в другой редактор, если вы не хотите перепечатывать его обратно.

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

Я тоже изменил это и избавился от этой ошибки.

1) Проверьте свойство CodeFile в in " имя файла.страница "aspx", ваш код за именем файла и это имя свойства должны быть одинаковыми.

2) Вы можете пропустить runat="сервер" в коде