1

我有一个带有四个 UpdatePanel 的 aspx 页面。顺便提一下,每个 UpdatePanel 对应一个 JQuery UI 选项卡。我想要实现的是一个 JQuery UI 模式对话框,它位于 UpdatePanel 之外,可以从运行在任何 UpdatePanel 内部的服务器端代码调用。因此,第一个 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 就在那里。我究竟做错了什么?

4

1 回答 1

0

您可以在异步回发期间在页面上运行 javascript,但要使其正确执行,您需要使用 ScriptManager 类来注册它。一旦你这样做了,它将在更新面板回调时作为启动脚本触发。在这些情况下,您可以将模式窗口打开调用作为启动脚本。

这是一个非常相似的问题,我在其中发布了一些自定义代码(请参阅接受的答案)。它可能会解决您的问题。

ASP.Net - AJAX UpdatePanel 中的 Javascript

如果您的模态打开调用本身是openMyModal(someParams...);,您可以将链接代码用作:

string scriptText = "openMyModal(someParams...);";
this.RegisterClientStartupScript("openMyModal", scriptText);
于 2010-01-08T19:55:46.957 回答