Вы можете сделать это с помощью UpdatePanel. Это займет немного хитрости, но попробуйте что-то вроде этого:
1) Поместите UserControl
в UpdatePanel
.
2) Поместите публичное свойство в свой usercontrol, например IsEnabled
, которое оно будет использовать, чтобы ничего не делать по условию или отображать «пожалуйста, подождите» Установите значение false на главной странице.
3) Добавьте код в OnInit
на главную страницу:
if (MyScriptManager.IsInAsyncPostback) {
MyUserControl.IsEnabled=true;
}
4) Добавьте клиентский скрипт по следующим направлениям:
finished=false;
Sys.WebForms.PageRequestManager.pageLoaded(function(sender,args) {
if (!finished) {
finished=true;
__doPostBack('','');
// you can include the uniqueID of your updatepanel as the first arg
// otherwise it will refresh all update panels
}
});
или с jquery ..
finished=false;
$(document).ready(function() {
if (!finished) {...
}
});
Что нужно сделать, так это вызвать асинхронную обратную передачу сразу после загрузки страницы, что, в свою очередь, приведет к обновлению панели обновления. Поскольку вы устанавливаете его включенным, когда он находится в асинхронной обратной передаче, он будет отображаться во второй раз.