Я хочу тщательно сформулировать этот вопрос, чтобы полезные люди не вмешивались и не тратили свое время на то, чтобы рассказать мне информацию, которую я уже знаю (я не хочу тратить свое время).
Я хочучтобы понять, как FindControl работает в проектах веб-приложений ASP.NET (тех, где файлы c # упоминаются как CodeBehind, а не CodeFile, в разметке).
У кода есть два файла, которые находятся между файлом разметки.Например, у Default.aspx будут Default.aspx.cs и Default.aspx.designer.cs
Если вы поместите кнопку на страницу, она будет добавлена в файл конструктора.Например: protected global :: System.Web.UI.WebControls.LinkButton LinkButton1;
Если вы хотите получить ссылку на этот элемент управления, он сразу же становится доступным в качестве члена класса Default.Например, this.LinkButton1.Text = "Click Me";
Если вы посмотрите на трассировку для страницы, ей присваивается уникальный идентификатор в соответствии с поведением для INamingContainers (здесь, страницы): ctl00 $ ContentPlaceHolder1$ LinkButton1
Я не понимаю, почему оператор возвращает ноль: Control c = Page.FindControl ("LinkButton1");
Я понимаю, что это не нужно, так каккнопка уже доступна классу Default.И это потому, что он отображается как член в файле Default.aspx.designer.cs.
Я не понимаю, что такое , почему возвращается null.Поскольку страница реализует INamingContainer, а кнопка имеет идентификатор, который соответствует ожидаемому для элемента управления в INamingContainer.Разве это не то, что находит FindControl?