无法使用更新面板从代码隐藏中触发JavaScript方法

时间:2017-10-17 11:06:14

标签: asp.net user-controls updatepanel scriptmanager registerclientscriptblock

问题详情:

在DB中保存数据后,我需要向用户显示警报。 为此,我从代码隐藏中注册了脚本。 但是不能使用更新面板,而它没有更新面板就可以正常工作。 我需要使用update-panel。

我尝试在注册脚本时添加$(document).ready(function (),但它没有用。

然后,我尝试使用ScriptManager.RegisterClientScriptBlock()方法代替Page.ClientScript.RegisterStartupScript(),但它也没有用。

以下是网页(ASPX)的代码段:

<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:Button ID="btnOutsideUpdatePanel" runat="server" Text="Outside UpdatePanel" OnClick="btnOutsideUpdatePanel_Click" />
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Button ID="btnInsideUpdatePanel" runat="server" Text="Inside UpdatePanel" OnClick="btnInsideUpdatePanel_Click" />
            </ContentTemplate>
        </asp:UpdatePanel>
        <uc1:Child runat="server" id="Child1" />
         <asp:UpdatePanel ID="UpdatePanel2" runat="server">
            <ContentTemplate>
                <uc1:Child runat="server" id="Child2" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>
</body>

以下是用户控件(ASCX)的代码段:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Child.ascx.cs" Inherits="UpdatePanelAndScript.Child" %>
<asp:Button ID="btnUserControl" runat="server" Text="User Control" OnClick="btnUserControl_Click" />

网页代码隐藏:

protected void btnOutsideUpdatePanel_Click(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}

protected void btnInsideUpdatePanel_Click(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}

用户控制的代码隐藏:

protected void btnUserControl_Click(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}

1 个答案:

答案 0 :(得分:1)

您只需要更改以下声明:

Page.ClientScript.RegisterStartupScript
(
    this.GetType(),
    "ShowSuccess",
    "alert('Hi');",
    true
);

要:

ScriptManager.RegisterStartupScript
(
    this,
    this.GetType(),
    "ShowSuccess",
    "alert('Hi');",
    true
);

参考:

  

注册部分页面更新兼容脚本
  [...]如果要渲染脚本以在UpdatePanel控件中使用,请确保调用ScriptManager控件的方法。