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