【问题标题】:Show a Client Alert After the codebehind has been processed. ASP.NET在处理完代码隐藏后显示客户端警报。 ASP.NET
【发布时间】:2015-02-16 21:09:29
【问题描述】:

我的 ASP.NET 4 Web 窗体应用程序中包含以下代码:

Protected Sub BTNSave_Click(sender As Object, e As EventArgs) Handles BTNSave.Click

   If saveOnDB() Then
      showOkAlert()
   Else
      showErrorAlert()
   End If
End Sub

当在后面的代码中完成的某些操作正常或发生错误时,我需要显示客户端警报。有什么想法吗?

我绑定了Response.Write("<script>alert('Successfully added');</script>"),但这永远不会起作用,甚至会在浏览器的控制台中产生错误:“未捕获的 Sys.WebForms.PageRequestManagerParserErrorException:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息。”

我也不使用OnClientClick,因为它在代码隐藏之前触发了javascript。

【问题讨论】:

    标签: javascript jquery asp.net vb.net alert


    【解决方案1】:

    我做类似的事情。我已经破解了一些工作代码以简化它作为您特定用途的示例:

        private void RegisterJavascriptForUpdatePanelExample(UpdatePanel myUpdatePanel, string myMessage)
        {
            const string JAVASCRIPT_TEMPLATE = "javascript: jQuery(function($) {{ alert({0}); }});";
            const string SCRIPT_KEY_TEMPLATE = "KeyForRegisterJavascriptForModalPopup_{0}";
            string scriptkey, scriptstr;
    
            scriptkey = string.Format(SCRIPT_KEY_TEMPLATE, myUpdatePanel.ClientID);
            scriptstr = string.Format(JAVASCRIPT_TEMPLATE, myMessage);
            ToolkitScriptManager.RegisterClientScriptBlock(myUpdatePanel, myUpdatePanel.GetType(), scriptkey, scriptstr, true);
        }
    

    在此示例中,调用了一个简单的 JavaScript alert() 来显示您的消息,如下所示:

    RegisterJavascriptForUpdatePanelExample("A-OK!");
    

    特别感兴趣的是 ToolkitScriptManager.RegisterClientScriptBlock 函数。这有几种变体,这取决于 JavaScript 代码是否应该嵌入并在 UpdatePanel 中执行,或者页面加载时,或其他情况。决定需要哪个功能可能有点令人困惑,但这正是您所需要的。

    【讨论】:

    • 在我的示例中,我在 JAVASCRIPT_TEMPLATE 中包含了对 jQuery 的调用。如果没有 jQuery,它只会是:“javascript: alert({0});”
    猜你喜欢
    • 2013-08-15
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2020-06-05
    相关资源
    最近更新 更多