Дмитрий,
сделайте, плз, в Bitrix.UI.TemplateRequisite свойство CreateScriptManager типа bool. И чтобы было доступно из разметки. Разгрузите психотерапевтов...
У меня на странице используется UpdatePanel, которая, как известно, без ScriptManager'а не работает. В своем OnInit она пытается получить ScriptManager со страницы. И еще учтем, что OnInit сначала отрабатывают вложенные контролы, и только потом верхние по иерархии.
Для нормальной поддержки админ-зоны на каждой страницы должен быть TemplateRequisite. TemplateRequisite обладает зачатками интеллекта и добавляет на страницу ScriptManager только когда посетитель аутентифицирован. Но мне-то нужно, чтобы ScriptManager всегда бы был на странице... Кстати, в 3-ей версии TemplateRequisite всегда вставлял ScriptManager и после апдейта было удивлением увидеть, как по непонятным причинам отвалились почти все страницы (AJAX в моде).
Если же руками добавить ScriptManager на страницу вместе с TemplateRequisite, то для админа пропадает панелька. Почему не знаю, не разбирался.
Ввходит надо принудить TemplateRequisite добавить ScriptManager на страницу, то есть дернуть у него RequireScriptManager. Осталось понять где это сделать. На OnInit уже поздно (дочерние OnInit уже отработают). Остается OnPreInit, а он есть только у Page, у Master PreInit нет.
Получается, что если в шаблоне моего компонента используется что-либо, что требует ScriptManager (тот же AjaxControlToolkit), то надо руками в файл страницы вставлять обработку OnPreInit. А если это контентная страница, которую может создать контент-менеджер, то ему надо будет пойти в код страницы и добавить соответствующий обработчик. Либо переопределить базовый класс страницы. Учитывая, что квалификация контент-менеджера обычно позволяет делать легкие правки HTML, я ожидаю шквала пинков разработчикам.
Пока я не вижу другого варианта добиться постоянного нахождения ScriptManager'а на странице, кроме как Page.OnPreInit. Если Вы можете предложить другой способ, то буду только благодарен. Если же других способов нет, то, чтобы избавится от необходимости решения этой проблемы через правку ASPX, предлагаю добавить TemplateRequisite свойство, которое будет отключать ему интеллект и заставлять вставлять ScriptManager.
Заранее благодарю!
сделайте, плз, в Bitrix.UI.TemplateRequisite свойство CreateScriptManager типа bool. И чтобы было доступно из разметки. Разгрузите психотерапевтов...
У меня на странице используется UpdatePanel, которая, как известно, без ScriptManager'а не работает. В своем OnInit она пытается получить ScriptManager со страницы. И еще учтем, что OnInit сначала отрабатывают вложенные контролы, и только потом верхние по иерархии.
Для нормальной поддержки админ-зоны на каждой страницы должен быть TemplateRequisite. TemplateRequisite обладает зачатками интеллекта и добавляет на страницу ScriptManager только когда посетитель аутентифицирован. Но мне-то нужно, чтобы ScriptManager всегда бы был на странице... Кстати, в 3-ей версии TemplateRequisite всегда вставлял ScriptManager и после апдейта было удивлением увидеть, как по непонятным причинам отвалились почти все страницы (AJAX в моде).
Если же руками добавить ScriptManager на страницу вместе с TemplateRequisite, то для админа пропадает панелька. Почему не знаю, не разбирался.
Ввходит надо принудить TemplateRequisite добавить ScriptManager на страницу, то есть дернуть у него RequireScriptManager. Осталось понять где это сделать. На OnInit уже поздно (дочерние OnInit уже отработают). Остается OnPreInit, а он есть только у Page, у Master PreInit нет.
Получается, что если в шаблоне моего компонента используется что-либо, что требует ScriptManager (тот же AjaxControlToolkit), то надо руками в файл страницы вставлять обработку OnPreInit. А если это контентная страница, которую может создать контент-менеджер, то ему надо будет пойти в код страницы и добавить соответствующий обработчик. Либо переопределить базовый класс страницы. Учитывая, что квалификация контент-менеджера обычно позволяет делать легкие правки HTML, я ожидаю шквала пинков разработчикам.
Пока я не вижу другого варианта добиться постоянного нахождения ScriptManager'а на странице, кроме как Page.OnPreInit. Если Вы можете предложить другой способ, то буду только благодарен. Если же других способов нет, то, чтобы избавится от необходимости решения этой проблемы через правку ASPX, предлагаю добавить TemplateRequisite свойство, которое будет отключать ему интеллект и заставлять вставлять ScriptManager.
Заранее благодарю!