Не могу получить доступ к идентификатору контроля в коде позади - PullRequest
19 голосов
/ 22 августа 2009

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

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

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

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

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

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

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

Есть идеи?

Ответы [ 13 ]

29 голосов
/ 22 августа 2009

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

10 голосов
/ 22 августа 2009

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

Button myButton = (Button)Container.FindControl("myButton");
myButton.Text = "bye";
3 голосов
/ 02 апреля 2015

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

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

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

Где myButton означает Id вашего контроля.

3 голосов
/ 19 мая 2011

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

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="InputValidation._Default" %>
2 голосов
/ 20 августа 2017

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

  • Перейти к: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • Удалить папку Temporary ASP.NET Files.
2 голосов
/ 25 сентября 2013

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

2 голосов
/ 12 марта 2011

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

1 голос
/ 27 мая 2016

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

1 голос
/ 23 декабря 2015

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...