У меня есть вызов ScriptManager.RegisterStartupScript в ASP.NET 3.5, который не отображается на странице, и я не могу понять, почему:
System.Web.UI.ScriptManager.RegisterStartupScript( Page
, typeof(ListControlBase)
, "ShowPopup_" + ClientID
, "alert(\"HI\");"
, true );
Вышеуказанный вызов находится внутри обработчика кнопки в базовом классе (ListControlBase), который подклассируется пользовательским элементом управления с помощью UpdatePanel (элемент управления List Manager). Этот пользовательский элемент управления существует для управления списком от 1 до n копий другого пользовательского элемента управления (элемента управления списком), которые динамически добавляются, обновляются или удаляются в PlaceHolder в UpdatePanel. Для тестирования я попытался добавить как 1, так и 2 копии элемента управления List List.
Элемент управления List Manager создается с использованием LoadControl (перегрузка, которая принимает путь ascx) и добавляется в PlaceHolder в элементе управления, представляющем полную форму, которую я создаю. До этого момента все элементы управления существуют в проекте веб-приложения. Затем полный элемент управления формы добавляется в PlaceHolder в объекте страницы, который существует в проекте родительского веб-сайта, снова используя LoadControl (та же перегрузка, что и выше) для создания экземпляра.
Если я достану UpdatePanel, вызов RegisterStartupScript приведет к тому, что сценарий запуска будет отображаться, как и ожидалось.
Оставив UpdatePanel, я использовал отладчик, чтобы убедиться, что скрипт действительно зарегистрирован в ScriptManager, как сразу после вызова RegisterStartupScript в проекте веб-приложения, так и в методе OnPreRender страницы в основном проекте:
Введено в QuickWatch: ((System.Web.UI.ScriptManager)(Page.ScriptManager))._scriptRegistration._startupScriptBlocks
Как я уже сказал, я могу видеть зарегистрированный сценарий запуска в QuickWatch при отладке как из проекта веб-приложения, так и из проекта веб-сайта, однако он не отображается на странице, которую я проверил с помощью Firebug.
Я искал в Интернете, в том числе StackOverflow несколько раз, но безуспешно. У кого-нибудь есть какие-либо идеи? Есть ли какое-либо свойство ScriptManager, которое я могу проверить в окне просмотра, которое может дать мне подсказку по этому вопросу?
Спасибо за любые идеи ...