客户端脚本不会与ScriptManager一起执行

时间:2011-04-08 09:41:22

标签: asp.net updatepanel scriptmanager

  1. 我有一个用户控件 更新面板
  2. 我正在尝试执行客户端 来自a的异步回发的脚本 updatepanel内的按钮
  3. 我正在使用 ScriptManager.RegisterStartupScript 执行脚本但它永远不会 执行
  4. scriptmanager代理不是 在用户控件本身内部 在包含用户的页面中 控制
  5. 有没有解决这个问题的方法?
  6. 脚本注册:

    ScriptManager.RegisterStartupScript(
        this, 
        this.GetType(), 
        "CloseEdit", 
        "CloseEditModal();", 
        true
    );
    

    谢谢,Damien。

1 个答案:

答案 0 :(得分:2)

ScriptManager.RegisterStartupScript Method (Control, Type, String, String, Boolean)的文档(我假设您使用此重载)说:

  

启动脚本块   使用这种方法注册的是   仅在控件时发送到页面   注册块是   在UpdatePanel控件内部   正在更新。

我假设您从用户控件中调用ScriptManager.RegisterStartupScript方法(如您所说,有一个更新面板)。这意味着方法的第一个参数不在正在更新的UpdatePanel控件中,因此脚本块未注册。因此,将脚本注册更改为:

ScriptManager.RegisterStartupScript(
    btnUpdate, 
    btnUpdate.GetType(), 
    "CloseEdit", 
    "CloseEditModal();", 
    true
);

应该解决你的问题。 btnUpdate此处是UpdatePanel内部导致回发的按钮(您在第2段中提及此内容)。