Подтвердить что ты не робот

Не удается получить доступ к идентификатору управления в коде

У меня есть следующий код на моей странице aspx:

 <asp:Button runat="server" ID="myButton" Text="hello" />

и это в моем коде:

protected void Page_Load(object sender, EventArgs e)
{ 
    myButton.Text = "bye"; 
}

По какой-то причине intellisense берет идентификатор "myButton" в коде позади, но когда он компилирует, он говорит

он не может построить, потому что он не распознает его!

Моя страница - это aspx-страница по умолчанию, которая использует главную страницу, кнопка находится внутри элемента управления содержимым, и все настроено на правильное выполнение на сервере, страница работает и отображается отлично, за исключением этой проблемы с разрешением кнопки!

Любые идеи?

4b9b3361

Ответ 1

Похоже, что ваш файл дизайнера (PageName.designer.cs) немного перепутался. Я бы попробовал удалить кнопку со своей страницы и добавить ее снова.

Ответ 2

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

Button myButton = (Button)Container.FindControl("myButton");
myButton.Text = "bye";

Ответ 3

Я столкнулся с той же проблемой, сначала я пытался понять, что не так с моим файлом designer.cs. Но после того, как я понял, что для моей разметки WebForm я использовал копию/вставку из веб-формы по умолчанию. Таким образом, проблема заключалась в том, что, как сказал Protector, убедитесь, что вы проверяете свойство inherit для @Page:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="InputValidation._Default" %>

Ответ 4

Я нашел простое решение для этого случая.

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

protected global::System.Web.UI.WebControls.Button myButton;

Где myButton находится Id вашего элемента управления.

Ответ 5

У меня возникла проблема, и я заметил, что файлы Designer.cs были исключены из моего проекта.
попытайтесь найти их снова включить в свой проект.
удачи

Ответ 6

Я знаю, что проблема решена, но когда у меня была подобная проблема, когда я преобразовал WebAplication From С# в VB - я решил это, добавив пространство имен X/End Namespace

Ответ 7

У меня была такая же проблема сегодня, и в моем случае решение было:

  • Перейти к: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • Удалить папку Temporary ASP.NET Files.

Ответ 8

Я столкнулся с этой проблемой несколько раз. Иногда классные имена в дизайнере и кодексе не совпадают. В других случаях это пространство имен не совпадает. В других случаях страница конструктора не получает генерируемую переменную-член.

Как отметил mdresser, регенерация файла дизайнера очень хорошо может позаботиться о проблеме. Просто убедитесь, что вы сначала сохранили страницу aspx.

Ответ 9

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

Ответ 10

Это было долгое время. Buuuut Сегодня я столкнулся с такой же проблемой, поэтому, кажется, никогда не поздно. Для меня это происходило, потому что TextBox находился внутри неназванной формы. Затем я устанавливаю id в форму, и я мог бы использовать TextBox следующим образом: idForm.idTextBox.ToString(). Я предполагаю, что это произойдет так же, как с button.

Ответ 11

Проблема заключается в том, что у вас могут быть несколько файлов aspx с кодовым файлом в указателях страниц в том же файле codebehind. Он ожидает, что один и тот же элемент управления будет существовать во всех файлах aspx, связанных с одним и тем же кодом, и, таким образом, выбросит ошибку компиляции.

Ответ 12

Проверить пространство имен во всех трех файлах. Иногда существует несоответствие между именем пространства имен в файле designer.cs и двумя другими файлами. Убедитесь, что имя пространства имен совпало во всех трех файлах