Вложенный Masterpages и.FindControl

Я хотел бы добавить (несколько спорное) мнение, что проверка ПУСТОЙ УКАЗАТЕЛЬ после попытки выделения является в значительной степени упражнением в тщетности. Если Ваша программа когда-нибудь сталкивается с той ситуацией, возможности - Вы, не может сделать намного больше, чем выход быстро. Вероятно, что любая последующая попытка выделения также перестанет работать.

, не проверяя на ПУСТОЙ УКАЗАТЕЛЬ, Ваш последующий код попытался бы разыменовать Нулевого указателя, который имеет тенденцию выходить из программы быстро с относительно уникальным (и легко debuggable) условие выхода.

я не пытаюсь говорить Вы из проверки ПУСТОЙ УКАЗАТЕЛЬ, это - конечно, добросовестное программирование. Но Вы не получаете много от него, если в очень конкретных случаях, где можно, возможно, хранить некоторую информацию восстановления (не выделяя больше памяти), или свободную менее важную память, и т.д. Но те случаи, не будет относительно редко для большинства людей.

, Учитывая это, я просто доверил бы компилятор для броска bad_alloc, лично - по крайней мере в большинстве случаев.

8
задан klkitchens 16 October 2009 в 13:53
поделиться

3 ответа

При вложении мастер-страниц вы получите дополнительный контейнер «Контент», который вам необходимо просмотреть.

В результате, если вы пытаетесь использовать FindControl с заданной дочерней страницы, обычный подход имеет эффект:

Label myLabel = (Label)this.Master.FindControl("myLabel");
myLabel.Text = "Success!";

Поскольку у нас есть вложенная главная страница, с "myLabel" в дочернем мастере этот элемент управления будет содержаться в элементе управления содержимым.

Таким образом, это изменяет код на:

ContentPlaceHolder ph = (ContentPlaceHolder)this.Master.Master.FindControl("yourContentPane");

Label myLabel = (Label)ph.FindControl("myLabel");
myLabel.Text = "Success!";

и в VB.NET

Dim ph As ContentPlaceHolder = DirectCast(Me.Master.Master.FindControl("yourContentPane"), ContentPlaceHolder)

Dim myLabel As Label = DirectCast(ph.FindControl("myLabel"), Label)
myLabel.Text = "Success!"

Содержимое дочерней страницы загружается в первый элемент управления главной страницы, который впоследствии загружается на главную страницу прародителя.

19
ответ дан 5 December 2019 в 07:35
поделиться

пробовали ли вы this.Master.Master.FindControl ("controlname"); ?

3
ответ дан 5 December 2019 в 07:35
поделиться

Он также работает для межстраничной обратной передачи:

ContentPlaceHolder ph = (ContentPlaceHolder) PreviousPage.Master.FindControl ("ContentPlaceHolder");

string txt = ((TextBox) (ph.FindControl ("UserTextBox"))). Text;

0
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: