我有以下内容:
<asp:UpdatePanel ID="upd" runat="server">
<ContentTemplate>
<script> alert("execute again"); </script>
<asp:LinkButton ID="go" runat="server" Text="Exec JS" />
</ContentTemplate>
</asp:UpdatePanel>
页面第一次呈现脚本时执行。如果我单击按钮导致回发,则不会再次执行。
有没有办法让它再次执行脚本?
答案 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相关,那么以下链接肯定会有所帮助:
我个人使用了本文中提到的第二种方法,它对我有用。