Решение для проблемы с динамическими User Control-ами
От: Oganes  
Дата: 30.11.02 22:58
Оценка: 3 (1) -1
В ответ на этот постинг
Автор:
Дата: 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 (а)вся нагрузка по хранению промежуточных данных ложится на сервер и(б) усложняется модель программирования.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.