是否可以在UpdatePanel中重新执行javascript?

时间:2010-12-09 16:29:38

标签: c# asp.net ajax updatepanel

我有以下内容:

<asp:UpdatePanel ID="upd" runat="server">
    <ContentTemplate>

        <script> alert("execute again"); </script>

        <asp:LinkButton ID="go" runat="server" Text="Exec JS" />

    </ContentTemplate>
</asp:UpdatePanel>

页面第一次呈现脚本时执行。如果我单击按钮导致回发,则不会再次执行。

有没有办法让它再次执行脚本?

3 个答案:

答案 0 :(得分:5)

哟!有一种简单的方法可以让JavaScript再次运行。将javascript放在页面的HeadContent部分:

<script> 

function BindIt()
{
    alert("execute again"); 
}

</script>

然后在更新面板内的页面上添加部分,调用您为javascript创建的函数:

            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                <script type="text/javascript">
                    Sys.Application.add_load(BindIt);
                </script>
...

在我正在进行的项目中,我希望页面上的所有javascript都能再次运行,所以我只需将其全部放入一个庞大的BindIt样式函数中。我花了一段时间才弄明白,我尝试了很多方法来实现这一点,但这是我能够让jquery使用updatepanels的唯一方法

答案 1 :(得分:3)

由于ASP只是推送原始数据,而不是实际执行它,您可能需要使用ScriptManager的RegisterStartupScript方法以编程方式注入脚本以在部分回发后加载。

修改 更直接地,尝试查看ScriptManager.RegisterStartupScript()以获取UpdatePanels。 e.g。

答案 2 :(得分:3)

如果JavaScript与jQuery相关,那么以下链接肯定会有所帮助:

http://weblogs.asp.net/hajan/archive/2010/10/07/make-them-to-love-each-other-asp-net-ajax-updatepanels-amp-javascript-jquery-functions.aspx

我个人使用了本文中提到的第二种方法,它对我有用。