ASP.NET вызывает метод в (ASPX) из пользовательского элемента управления (ASCX)?

получил Default.aspx

его кодовая часть имеет метод: public void DoSomething(){}

У Default.aspx есть UserControl.ascx

В программном коде моего UserControl.ascx я хотел бы вызвать свой DoSomething() из Default.aspx, но это не работает:

Default defaultPage = new Default();
defaultPage.DoSomething();

Как я могу этого добиться? (Default.aspx также является StartupPage главной страницы)


person eMi    schedule 18.10.2011    source источник


Ответы (1)


Default defaultPage = new Default(); создаст новый экземпляр вашей страницы, а это не то, что вам нужно.

Из вашего пользовательского контроля вы можете сделать что-то вроде этого:

((Default)Page).DoSomething();

Или, чтобы быть в безопасности, убедитесь, что Page имеет тип Default, поскольку пользовательский элемент управления может существовать на многих разных страницах (поэтому это может быть не лучшей идеей).

Default p = Page as Default;
if( p != null )
    p.DoSomething();
person Doozer Blake    schedule 18.10.2011
comment
Спасибо, и не могли бы вы сказать мне, как я могу вызвать метод из MASTERPAGE.Site в примере Default.aspx? - person eMi; 19.10.2011
comment
Аналогичный синтаксис ((MasterType)this.Master).Method() - person Doozer Blake; 19.10.2011