Вопрос

У меня есть страница aspx с четырьмя панелями обновления.Кстати, каждая UpdatePanel соответствует вкладке пользовательского интерфейса JQuery.Я пытаюсь создать модальный диалог пользовательского интерфейса JQuery ВНЕ UpdatePanels, который можно вызвать из серверного кода, запускающего ВНУТРИ любого из UpdatePanels.Итак, внутри первой UpdatePanel находится asp:Button, который запускает некоторый серверный код.При возникновении ошибки я хочу иметь возможность внедрить некоторый код 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.Что я делаю не так?

Это было полезно?

Решение

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

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

ASP.Net – Javascript внутри AJAX UpdatePanel

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

string scriptText = "openMyModal(someParams...);";
this.RegisterClientStartupScript("openMyModal", scriptText);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top