Добавить EventHandler на страницу содержимого - PullRequest
1 голос
/ 26 октября 2011

Я подключил Button к моей Master Page в Content Page следующим образом:

SiteMaster MasterPage;

protected void Page_Load(object sender, EventArgs e) 
{
   if (!Page.IsPostBack) 
   {
      MasterPage = (SiteMaster)Page.Master;
      MasterPage.Button1.Click += new EventHandler(Button1_Click);
   }
}

void Button1_Click(object sender, EventArgs e) 
{
   MasterPage.Button1_Click(sender, e);
}

Однако всякий раз, когда я нажимаю Button1 на странице (запущенной под localhost), событие Page_Load срабатывает!

Что я сделал не так?

Если это помогает, событие MasterPage.Button1_Click запускает сценарий входа в систему, поэтому рекурсивных вызовов не должно быть.

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Проблема здесь в том, что обработчик Button1_Click не запускает вас?

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

Попробуйте назначить обработчик событий при начальной загрузке и последующих обратных передачах следующим образом:

protected void Page_Load(object sender, EventArgs e)
{
    MasterPage = (SiteMaster)Page.Master;
    MasterPage.Button1.Click += new EventHandler(Button1_Click);
}

Надеюсь, это поможет.

1 голос
/ 26 октября 2011

Возможно, вы хотите подключить ваше событие к Page_Init, а не к Page_Load.

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

см. http://support.microsoft.com/kb/305141 для подробностей жизненного цикла страницы.

Page_Init: во время этого события выможет инициализировать значения или подключать любые имеющиеся у вас обработчики событий.

см. также вопрос: В asp.net, page_load происходит до события переключателя OnCheckedChanged

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...