Это уродливое решение, если у вас куча пользователей, но вы можете вставить пользовательский контроль в сеанс.
Я делаю это с помощью элемента управления нижнего колонтитула, потому что я не хочу нажимать на БД при каждом изменении страницы, чтобы воссоздать нижний колонтитул.
Эти решения могут действительно поставить задачи на сервере, если у вас много пользователей, и они часто используют эту функцию. По крайней мере, я думаю, что это будет ...
Но вы можете просто заполнить свой заполнитель, в котором есть пользовательские элементы управления на page_load. Я могу привести пример в ближайшее время.
Пример того, что я делаю:
if (Session["footer"] == null)
{
Session["footer"] = new Footer(LinksRules.BuildFooterLinks((int)WebSiteSections.Main));// where Footer is my control
}
footerPH.Controls.Add((Footer)Session["footer"]);
Как шаблон синглтона ...
Так что, как я понимаю, вы можете сделать это на любом, что вызовет обратную передачу
Session ["DynamicControls"] = PlaceHolder.Controls;
и в методе загрузки страницы вы можете:
foreach(var control in (List<Controls>)Session["DynamicControls"])
{
yourPlaceHolder.Controls.Add(control);
}
и если объект сеанса пуст, просто добавьте один, как будто его там никогда не было ..
Полагаю, это будет зависеть от данных внутри элементов управления, как вы хотите.