Клиентский скрипт не будет выполняться с ScriptManager - PullRequest
0 голосов
/ 08 апреля 2011
  1. У меня есть пользовательский элемент управления, который имеет панель обновления
  2. Я пытаюсь выполнить клиентскую часть сценарий от асинхронной обратной передачи от кнопка внутри панели обновления
  3. Я использую ScriptManager.RegisterStartupScript выполнить скрипт, но он никогда исполняется
  4. Прокси-менеджер сценария не внутри самого пользовательского элемента управления это на странице, содержащей пользователя контроль
  5. Есть ли способ обойти эту проблему?

Сценарий регистрации:

ScriptManager.RegisterStartupScript(
    this, 
    this.GetType(), 
    "CloseEdit", 
    "CloseEditModal();", 
    true
);

Спасибо, Дэмиен.

1 Ответ

2 голосов
/ 08 апреля 2011

Документация к ScriptManager.RegisterStartupScript Method (Control, Type, String, String, Boolean) (я полагаю, вы используете эту перегрузку) гласит:

Блоки скриптов запуска, которые зарегистрированы с использованием этого метода отправляется на страницу только тогда, когда контроль который регистрирует блок внутри UpdatePanel элемента управления, который обновляется.

Я предполагаю, что вы вызываете метод ScriptManager.RegisterStartupScript из своего пользовательского элемента управления (, который, как вы сказали, имеет панель обновления ). Это означает, что первый параметр метода не находится внутри элемента управления UpdatePanel, который обновляется , поэтому блок сценария не зарегистрирован. Итак, изменив регистрацию скрипта на:

ScriptManager.RegisterStartupScript(
    btnUpdate, 
    btnUpdate.GetType(), 
    "CloseEdit", 
    "CloseEditModal();", 
    true
);

должен решить вашу проблему. btnUpdate вот кнопка внутри вас UpdatePanel, которая вызвала обратную передачу (вы упомянули об этом в пункте 2).

...