Как вы определяете, необходим ли Asp.net Scriptmanager необходим на странице

#c# #asp.net #ajax #updatepanel #scriptmanager

#c# #asp.net #ajax #updatepanel #scriptmanager

Вопрос:

Есть ли простой способ определить, есть ли на странице элемент управления, для которого требуется scriptmanager? Я добавляю scriptmanager на каждую страницу (что отлично работает) при инициализации моей страницы, но, похоже, был бы лучший способ, чем просто заставлять каждую страницу иметь scriptmanager. Возможно, на 1 из 4 страниц есть панели обновления или какой-то расширитель. Или это не большая дополнительная нагрузка и просто не стоит беспокоиться об этом?

Комментарии:

1. Если вы используете UpdatePanel, то это необходимо

Ответ №1:

Используйте наследование в своих интересах. Создайте какой-нибудь ScriptManagerPageBase класс, PageInit метод которого вызывает новый ScriptManager . Для каждой страницы, которая требует вашего ScriptManager , например, использования UpdatePanel элемента управления, просто наследовите эту страницу от ScriptManagerPageBase , и вы получите эту функциональность только тогда, когда она вам понадобится, без необходимости дублировать код.

Комментарии:

1. Если у меня есть страница, которая наследуется от вашей «ScriptManagerPageBase», и веб-пользовательский элемент управления (.ascx), которому также необходим ScriptManager, когда я размещаю MyControl.ascx на yourPage.aspx, они не столкнутся, если вы не используете прокси?

Ответ №2:

На вашей главной странице (или базовой странице, в зависимости от вашего подхода, я рекомендую master pages ..) просто добавьте scriptmanager. Если это не необходимо, это не повлияет на страницу во время выполнения. Затем добавьте scriptmanagerproxy на каждую страницу или элемент управления, которым требуется scriptmanager. Во время выполнения прокси найдет базовый или главный менеджер и зарегистрирует все ранее незарегистрированные скрипты. Смотрите Описание MSDN SCRIPTMANAGERPROXY