Asp.Net <control> не существует в текущем контексте

Я столкнулся с небольшой большой проблемой. Я взял элемент управления dropdownList и ID "drpDownCountries "в проекте ASP.Net. Проблема заключается в том, что" The dropdownlist control размещается на странице, в коде за файлом С#, набирая имя элемента управления "drpDownCountries", этот идентификатор элемента управления указан в списке членов объекта.    Но при компиляции проекта я получаю следующую ошибку.

Ошибка: - Имя "drpDownCountries" не существует в текущем контексте.

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

Ответы

Ответ 1

Щелкните правой кнопкой мыши файл ASPX (или ascx) и выберите Преобразовать в веб-приложение (или что-то в этом роде). Это заставит обновить файл конструктора.

Ответ 2

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

Что в конечном итоге сработало для меня - это внести изменения в файл ascx в представлении "Дизайн", а затем сохранить его. Это, наконец, вынудило Visual Studio регенерировать файл designer.cs и включить мой новый элемент управления.

Ответ 3

Я видел, что эта ошибка возникает, когда в папке проекта есть копия .aspx-страницы.

Пример:

Ошибка в Test.aspx.

В папке проекта есть файл Test-copy.aspx.

Удалить, переименовать с другим расширением или переместить Test-copy.aspx в другую папку.

Ошибка решена.

Ответ 4

Возможно, в вашем файле aspx/aspx произошла ошибка, из-за которой файл конструктора не обновляется правильно. Вы можете подтвердить это, добавив что-то новое (например. "") И посмотреть, можете ли вы получить к нему доступ. Если нет, в разметке, вероятно, будет что-то, что вам нужно исправить.

Ответ 5

Итак, сначала проверьте, что ваш документ ascx определен таким образом

ExampleClass.ascx

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="ExampleClass.ascx.cs" Inherits="ExampleClass" %>

ExampleClass.ascx.cs

public partial class ExampleClass : System.Web.UI.UserControl
{
     protected void Page_Load(object sender, System.EventArgs e)
    {

    }
}

Ответ 6

Вы должны указать код для получения справки.

В любом случае может возникнуть проблема, заключающаяся в том, что drpDownCountries содержится в панели управления.

Элемент управления панелью является элементом управления контейнером, поскольку он может содержать много управления.
Чтобы получить доступ к элементам управления внутри этого элемента управления Panel, вам сначала нужно "помочь" ASP.Net, чтобы найти его.

Типичный способ сделать это - использовать метод FindControl посмотреть здесь.

Пример кода:

DropDownList myDrop = (DropDownList)this.Panel1.FindControl("drpDownCountries");
 if(myDrop != null)
  {
     ..somecode..
  }

Ответ 7

Единственное, что сработало для меня, это добавить контроллер temp в файл aspx и сохранить его. Это снова создало конструктора, и теперь мои контроллеры распознаются! Я так горжусь. Затем вы можете удалить контроллер темпа и сохранить его, он ничего не испортит, вы напугаете кошку!

Ответ 8

Восстановите проект. Просто создайте новый проект и добавьте элементы один за другим и надейтесь, что этого больше не повторится. Если это так, хорошо, что часть опыта Microsoft: воссоздайте другой проект и так далее, пока вы не решите выйти из своей работы и присоединиться к open-source.

КОРРЕКЦИЯ

Я собираюсь повторить проект, над которым я работаю последние 3 дня, используя ASP.NET MVC. Я должен использовать технологию с открытым исходным кодом, но, к сожалению, это не мое решение для этого проекта не использовать .NET.

Ответ 9

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