Правильное использование недавно созданного пользовательского элемента управления из кода - PullRequest
0 голосов
/ 29 марта 2019

У меня есть несколько пользовательских элементов управления, которые я написал, отлично работал, но теперь встревожен тем фактом, что они, кажется, не работают вообще, если я добавляю их динамически.То есть, когда я помещаю их непосредственно в код ASPX, они работают нормально, но не тогда, когда я создал их с помощью ключевого слова new, а затем вставляю их куда-то.

Рассмотрим следующий элемент управления:

class MyUserControl: UserControl {
    public string Text { get => this.lblChildLabel; set => this.lblChildLabel = value; } 
}

Предположим, что на передней панели имеется только одна метка с именем lblChildLabel.

Если я добавлю вышеуказанный элемент управления в свой код, я легко смогу его контролировать:

// In page_prerender
theControl.Text = "Anything";

И он отображается нормально.

Однако, если бы я создавал его "вручную", например:

var aNewControl = new MyUserControl();
aNewControl.Text = "Something"; // Exception: MyUserControl's lblChildLabel is not set to an instance of an object

Это, похоже, не проблемас любыми встроенными элементами управления.

Есть идеи?

1 Ответ

0 голосов
/ 31 марта 2019

Будучи хорошим ТАК гражданином, я сообщаю о решении.

Короче говоря, это неправильно:

var aNewControl = new MyUserControl();
aNewControl.Text = "Something";

Это правильно:

var aNewControl = (MyUserControl) Page.LoadControl("~/User Controls/MyControl.ascx");
aNewControl.Text = "Something";

Первый не проходит нормальный жизненный цикл, в то время как второй проходит.

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