У меня есть вызов ScriptManager.RegisterStartupScript в ASP.NET 3.5, который не отображается на странице, и я не могу понять, почему:
System.Web.UI.ScriptManager.RegisterStartupScript( Page
, typeof(ListControlBase)
, "ShowPopup_" + ClientID
, "alert(\"HI\");"
, true );
Вышеупомянутый вызов находится внутри обработчика кнопки в базовом классе (ListControlBase), который подклассифицируется пользовательским элементом управления с помощью UpdatePanel (List Manager Control). Этот пользовательский элемент управления существует для управления списком от 1 до n копий другого пользовательского элемента управления (List Item Control), которые динамически добавляются, обновляются или удаляются в PlaceHolder в UpdatePanel. Для тестирования я попытался добавить как 1, так и 2 копии элемента управления List Item.
Элемент управления 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, которое я могу проверить в окне просмотра, которое может дать мне подсказку по этому поводу?
Спасибо за любые идеи ...