Как обработать событие кнопки главной страницы на странице содержимого? - PullRequest
1 голос
/ 20 апреля 2010

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

Ответы [ 3 ]

1 голос
/ 20 апреля 2010

Рассматривали ли вы использование строго типизированных главных страниц ?

Вы также можете проверить мой ответ на этот вопрос.

0 голосов
/ 20 апреля 2010

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

protected void Page_Load( object sender, EventArgs e )
{
    var master = (MyMaster)this.Master;
    master.Foo();
}
0 голосов
/ 20 апреля 2010

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

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");
    }
}

Прошло много времени с тех пор, как я работал с веб-формами, поэтому я не могу поклясться, что это работает. Кажется, я вспомнил, что писал что-то подобное раньше.

...