如何在asp.net中的UserControlPostBack上执行JavaScript

How to execute JavaScript on UserControl PostBack in asp.net?

本文关键字:UserControlPostBack 执行 JavaScript 中的 net asp      更新时间:2023-09-26

我们有一个由多个用户控件组成的asp.net页面,其中许多控件的visible属性设置为false。通过选择单选按钮,可以通过在后面的代码中将visible属性设置为true来显示其中一个用户控件。当这种情况发生时,我们希望运行一个JavaScript函数。脚本已使用页面的Page_Load方法中的ScriptManager.RegisterStartUpScript进行了注册。

我们怎样才能做到这一点?

我们尝试过的东西:

  • 在用户控件中注册脚本(代码隐藏和标记)
  • 正在尝试ScriptManager上可用的一些其他方法
  • 使用jQuery $(document).ready()

但在所有情况下,只有在加载/重新加载页面时才会执行脚本。唯一有效的破解是在每次PostBack后调用pageLoad()函数内部的函数。

我建议您在updatePanel中包含用户控件,并在updatePanel加载事件中添加ScriptManager.RegisterStartUpScript:

<asp:UpdatePanel runat="server" ID="UpdatePanel1" 
OnLoad="UpdatePanel1_Load">

c#

protected void UpdatePanel1_Load(object sender, EventArgs e)
{
  //your code to fire the javascript
}

您可以尝试服务器端:ClientScriptManager.RegisterClientScriptBlock()和客户端:setTimeout()

例如:

protected void Page_Load(object sender, EventArgs e)
{
    Page page = (Page)HttpContext.Current.CurrentHandler;
    string script = "<script type='"text/javascript'">setTimeout(function(){alert("Hello World")},3000);</script>";
    if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
    {
            page.ClientScript.RegisterClientScriptBlock(typeof(PageFunctions), "alert", script);
    }
}

这将在page_load上注册一个脚本块,3秒后将显示警报。请参阅有关setTimeout@Window setTimeout()方法的更多信息

相关文章:
  • 没有找到相关文章