Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Обращение к странице содержимого из мастер страниц


Автор: megatron 1.3.2007, 18:27
Собственно, в этом вопрос и состоит как обратися к элементу управления, например button в странице содержимого, через мастер страницу. 

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

За любой ответ буду очень благодарен.


Автор: Choose_Life 10.3.2007, 14:20
Попробуй так:

Код

public partial class MyMasterPage : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Web.UI.Page contentPage = this.Page;
        Button btn = contentPage.FindControl("myButton") as Button;        
    }
}

Автор: djGri 12.3.2007, 12:28
можно и по имени :

Код

public void foo() {
Button btn = ContentPlaceHolder1.FindControl("myButton") as Button;   
}



Автор: megatron 13.3.2007, 07:44
Если честно, я этот способ знал, но думал что это не тревиальный метод. Можно ли как-нибудь обратиться без поиска? Разве нет более четкого обращения к дочерним страницам? 

Автор: Tectoder 16.3.2007, 16:02
Получить ссылку на дочернюю страницу можно легко, с помощью this.Page
Другое дело, если вам требуется привести полученное значение к конкретному типу. Это уже несет некоторые сложности.
Могу посоветовать объявлять в папке App_Code некоторый интерфейс, который будет наследоваться классом дочерней страницы. Тогда вы сможете в мастер-странице объявить переменную этого интерфейса и присвоить ей значение this.Page

Возможность использовать в мастер-странице тип, объявленный непосредственно в дочерней странице мне не известен, но мне очень хотелось бы узнать, если таковая возможность существует.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)