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

StackOverflow https://stackoverflow.com/questions/1316757

Вопрос

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

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

И это в моем коде позади:

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

По какой -то причине Intellisense поднимает идентификатор «Mybutton» в коде, но когда он компилирует, он говорит

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

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

Любые идеи?

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

Где mybutton является Id вашего контроля.

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

Я знаю, что проблема решена, но когда у меня была похожая проблема, когда я преобразовал веб -аплинацию из C# в VB - я решил это, добавив пространство имен x / cond namespace

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

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

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

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

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

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

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

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

Просто измените свойство «Наследственное» в соответствии с тегом страницы

    <% 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 inherit = "Project_Name.test1"

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

    <% Page inherit = "Project_Name.test2"

Из -за чего ваше тест.

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

    public partial class test1
    {
     ...

Изменился на

    public partial class test2
    {
    ... 

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top