我有一个包含四个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就在那里。我做错了什么?
答案 0 :(得分:0)
您可以在异步回发期间在页面上运行javascript,但要使其正确执行,您需要使用ScriptManager类进行注册。一旦这样做,它将在更新面板回调时作为启动脚本触发。在这些情况下,您可以将模态窗口打开调用fire作为启动脚本。
这是一个非常相似的问题,我在其中发布了一些自定义代码(请参阅已接受的答案)。它可能会解决您的问题。
ASP.Net - Javascript inside AJAX UpdatePanel
如果您的模态公开呼叫本身为openMyModal(someParams...);
,则可以将链接代码用作:
string scriptText = "openMyModal(someParams...);";
this.RegisterClientStartupScript("openMyModal", scriptText);