2010-04-20 4 views
1

Моя проблема заключается в том, что у меня есть базовая страница, которая динамически создает контент. На моей главной странице есть кнопки, которые запускают события, о которых должна знать моя базовая страница. Но функция OnLoad на моей базовой странице срабатывает перед моей функцией Button_Command на моей главной странице. Поэтому мне нужно выяснить способ загрузки моей базовой страницы после того, как функция Button_Command имела возможность установить переменную, или я должен вызвать функцию на моей базовой странице из функции Button_Command.Как обрабатывать событие кнопки главной страницы на странице содержимого?

ответ

0

Я считаю, что вы можете сделать это с помощью интерфейса

public interface ICommandable 
{ 
    public void DoCommand1(object argument); 
} 

Так страница ребенок реализует этот интерфейс

public class MyPage : Page, ICommandable 
{ 
    public void DoCommand1(object argument) { 

    } 
} 

А на главной странице

public class Master : MasterPage 
{ 
    public void Button_Command(object sender, EventArgs e) 
    { 
     if (Page is ICommandable) 
     { 
      (Page as ICommandable).DoCommand1(myargument); 
     } 
     else 
      throw new NotImplementedException("The current page does not implement ICommandable"); 
    } 
} 

Это было долгое время с тех пор, как я работал с webforms, поэтому я не могу поклясться, что это работает. Кажется, я вспоминаю, как раньше это писал.

0

Не могли бы вы просто инкапсулировать логику Button_Command в открытый метод и вызвать этот метод как из события Button_Command на главной странице, так и из события «Загрузить» на дочерней странице? Так что-то вроде

protected void Page_Load(object sender, EventArgs e) 
{ 
    var master = (MyMaster)this.Master; 
    master.Foo(); 
} 
Смежные вопросы