В ответ на
этот постингАвтор:
Дата: 07.11.02
На самом деле viewstate для UserControl-ов сохраняется, и все обработчики вызываются при соблюдении двух простых правил:
1) При postback нужно перезагружать control в методе OnInit(), чтобы UserControl был загружен до того, как загружается ViewState (например, сохраняем в hidden field путь к контролу, а затем в OnInit смотрим на
Request.Params["CurrentControlPath"])
2) Кроме того, нужно, чтобы всегда control.ID при PostBack был тот же, что и при загрузке. Для этого можно либо
а)выставлять его при первой загрузке control-а и при перезагрузке страницы, либо
б) сохранять его еще в одном hidden field
2 TK Можно требовать от ASP.NET того же, что и от Windows Forms. Я для своей конторы спроектировал что-то вроде системы Wizard-ов для ASP.NET, в которой каждая aspx страница по сути является контроллером use case, а UserControl является отдельной страничкой Wizard-а. Для всех сохраняется состояние, вызываются обработчики и т.п. Теперь дизайнерам этих контролов нужно только писать что-то вроде
OnButtonClick(..)
{
BusinessFacade.DoThis();
_container.MoveNext();
}
и дизайном заниматься

Если интересно, могу код выложить куда-нибудь.
IMHO, asp.net горазжо лучше подходит для сценариев, когда данные в основном выводятся, а не редактируются/заносятся, т.к. во втором случае из-за stateless-ности asp.net (а)вся нагрузка по хранению промежуточных данных ложится на сервер и(б) усложняется модель программирования.