Не могу получить доступ к идентификатору контроля в коде позади - 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 ]

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

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

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

0 голосов
/ 22 апреля 2018

Просто измените свойство наследования под тегом страницы

    <% Page inherit = "Project_Name.otherform" 

изменить на

    <% Page inherit = "Project_Name.YourForm"

И вы увидите, что в form2.aspx.desginer.cs имя класса также изменено и исправлено.

Позвольте мне объяснить: Допустим, у вас есть 2 веб-формы test1.aspx и test2.aspx. Вы скопировали часть кода из test1.aspx в test2.aspx, ваш файл test2.aspx будет использовать тег <% page как: </p>

    <% Page inherit = "Project_Name.test1"

который должен был быть как:

    <% Page inherit = "Project_Name.test2"

, из-за чего ваше имя класса test2.aspx.designer.cs будет автоматически изменено на то же, что и test1.aspx.designer.cs, поскольку это файл, созданный системой, и вы не сможете использовать свои идентификаторы элементов управления. *

После исправления вашего наследуемого свойства сохраните и откройте test2.aspx.designer.cs для проверки, и вы увидите, что имя класса также изменилось. это будет как:

    public partial class test1
    {
     ...

Изменено на

    public partial class test2
    {
    ... 

Спасибо, позже;)

0 голосов
/ 12 ноября 2017

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

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