Внедрение JavaScript вне панели обновления - PullRequest
1 голос
/ 08 января 2010

У меня есть страница aspx с четырьмя панелями обновления. Между прочим, каждая UpdatePanel соответствует вкладке пользовательского интерфейса JQuery. То, чего я пытаюсь достичь, - это модальное диалоговое окно JQuery UI ВНЕ UpdatePanels, которое можно вызвать из серверного кода, выполняющего INSIDE любой из UpdatePanels. Итак, внутри первого UpdatePanel находится кнопка asp:, которая выполняет некоторый код на стороне сервера. Когда возникает ошибка, я хочу иметь возможность внедрить некоторый JavaScript, который вызовет модальное диалоговое окно для отображения сообщения об ошибке. Вот код, который я использую:

Dim script As String = "showPopupMessage('{0}');"
script = String.Format(script, errorMessage)
ScriptManager.RegisterStartupScript(Me.UpdatePanelBizInfo, Me.UpdatePanelBizInfo.GetType, Guid.NewGuid.ToString, script, True)

Функция showPopupMessage на странице выглядит следующим образом:

function showPopupMessage(msg) {
    $('#<%=Me.LabelPopupMessage.ClientID %>').text(msg);
    $('#dialogPopupMessage').dialog('open');
}

Когда код запускается для внедрения JavaScript, ничего не происходит. Я предполагаю, что это как-то связано с тем, что ошибка возникает в коде, работающем внутри UpdatePanel. После проверки полученного HTML, JavaScript есть. Что я делаю не так?

1 Ответ

0 голосов
/ 08 января 2010

Вы можете запустить javascript на странице во время асинхронной обратной передачи, но для ее правильного выполнения вам необходимо использовать класс ScriptManager для его регистрации. Как только вы это сделаете, он будет запускаться как сценарий запуска при обновлении панелей обратного вызова. В этих случаях в качестве сценария запуска может использоваться режим вызова вызова модального окна.

Вот очень похожий вопрос, где я разместил собственный код (см. Принятый ответ). Это, вероятно, решит вашу проблему.

ASP.Net - Javascript внутри панели обновления AJAX

Если по сути ваш модальный открытый вызов openMyModal(someParams...);, вы можете использовать связанный код как:

string scriptText = "openMyModal(someParams...);";
this.RegisterClientStartupScript("openMyModal", scriptText);
...