На самом деле ваша проблема не имеет ничего общего с UpdatePanel.
Представьте, что бы произошло, если бы у вас была 3-я кнопка LinkButton, которая ничего не делала, кроме обратной передачи. Что произойдет, если вы нажмете 1-ую ссылку LinkBont, появится UserControl, а затем вы нажмете 3-е? Что вы ожидаете увидеть? Если вы думаете, что снова увидите UserControl, вы ошибаетесь. Динамически созданные элементы управления должны создаваться при каждом запросе, они не сохраняются автоматически. ViewState запоминает состояние элементов управления на странице, а НЕ то, чем в первую очередь являются сами элементы управления - это то, что делает разметка на странице aspx. Динамически созданные элементы управления, очевидно, не находятся в разметке, поэтому они не воссоздаются автоматически.
Вы должны думать о жизненном цикле элемента управления как о «пересекающемся» между двумя запросами. Он начинается в середине одного запроса и заканчивается в середине следующего. Вам необходимо сохранить, какой пользовательский элемент управления отображается в данный момент, либо в скрытом поле, либо в значении Page.ViewState (но не сам пользовательский элемент управления, а любую информацию, которая вам нужна для его выяснения), а затем перезагрузить этот элемент управления из OnLoad страницы. Если вы сделаете это - последовательность будет выглядеть следующим образом:
(1) Нажмите LinkButton1
(2) UserControl1 динамически создается
(3) Нажмите LinkButton2
(4) Page.OnLoad перезагружает UserControl1
(5) UserControl1 загружает свои данные обратной передачи и состояние просмотра
(6) происходит событие щелчка LinkButton2
(7) Удалить существующий UserControl1 и динамически добавить UserControl2
(8) UserControl2 может иметь тот же идентификатор, поскольку UserControl1 уже «потребляет» свое состояние.
Я предлагаю вам просмотреть мою серию статей о понимании динамического управления в ASP.NET:
http://weblogs.asp.net/infinitiesloop/