Жизненный цикл контролов ASP.NET
От: polyvox  
Дата: 12.02.08 13:52
Оценка:
У меня есть 2 кнопки, добавленные на страницу динамически. Я хочу, чтобы при нажатии на первую кнопку на страницу добавлялся user control типа A, при нажатии на вторую — user control типа B. Однако, я столкнулся со следующим противоречием:

1. Я не могу добавлять user control в OnLoad страницы, т.к. в этот момент я еще не знаю, на какую кнопку нажал пользователь (обработка событий произойдет после OnLoad).

2. Также я не могу добавлять user control после обработки событий (например, в OnPreRender), т.к. в этом случае у дочерних контролов моего user control не будут срабатывать обработчики событий (потому что этих дочерних контролов на момент обработки событий еще нет — они будут добавлены только в OnPreRender).

Я нашел 2 способа решить эту проблему:

1. Я могу вручную разбирать коллекцию Request.Form (параметры постбэка из http-запроса), чтобы определить, кто инициировал событие (в данном случае — нажатую кнопку) и создать нужный user control.

2. Я могу добавлять user control в OnLoad в соответствии с предыдущим состоянием страницы, а потом, если сработает обработчик клика на кнопку, удалять неправильный user control и добавлять правильный.

Оба способа плохи по разным причинам. Есть ли какие-то другие способы корректно решить проблему? Возможно, я чего-то принципиально не понимаю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.