在更新面板外部注入JavaScript

时间:2010-01-08 19:45:54

标签: asp.net javascript updatepanel jquery-dialog

我有一个包含四个UpdatePanel的aspx页面。顺便提一下,每个UpdatePanel对应一个JQuery UI选项卡。我想要实现的是一个JQuery UI模式对话框OUTSIDE UpdatePanels,可以从运行INSIDE任何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就在那里。我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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

ASP.Net - Javascript inside AJAX UpdatePanel

如果您的模态公开呼叫本身为openMyModal(someParams...);,则可以将链接代码用作:

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