asp.net - 在更新面板外部注入(inject) JavaScript

标签 asp.net javascript updatepanel jquery-dialog

我有一个包含四个 UpdatePanel 的 aspx 页面。顺便说一下,每个 UpdatePanel 对应一个 JQuery UI 选项卡。我想要实现的是 UpdatePanel 外部的 JQuery UI 模式对话框,可以从任何 UpdatePanel 内部运行的服务器端代码调用该对话框。因此,第一个 UpdatePanel 内部是一个运行一些服务器端代码的 asp:Button。当发生错误时,我希望能够注入(inject)一些 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');
}

当代码运行以注入(inject) JavaScript 时,没有任何反应。我假设这与 UpdatePanel 内运行的代码中发生错误有关。检查生成的 HTML 后,就会发现 JavaScript 就在那里。我做错了什么?

最佳答案

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

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

ASP.Net - Javascript inside AJAX UpdatePanel

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

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

关于asp.net - 在更新面板外部注入(inject) JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2030242/

相关文章:

c# - 使用 asp.net 成员(member)资格有哪些优点和缺点?

javascript - 如何在 jquery 变量上显示警报消息?

c# - 在更新面板 c# asp.net 的文件上传控件中丢失文件

javascript - ASP.NET Partial Postback 表单值问题

javascript - ASP.Net Ajax 工具包客户端代码和 javascript 问题

asp.net - 自动登录 DNN

asp.net - 显示/隐藏 div 标签 javascript

javascript - 编辑此工具提示实现,使工具提示等待 x 秒隐藏

javascript - Ajax 发送重复的 header

asp.net - 防止在 UpdatePanel 中双击 LinkBut​​ton