Re: Решение для проблемы с динамическими User Control-ами
От: TK Лес кывт.рф
Дата: 02.12.02 08:23
Оценка:
Здравствуйте, 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 (а)вся нагрузка по хранению промежуточных данных ложится на сервер и(б) усложняется модель программирования.


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