【问题标题】:Client side script won't execute with ScriptManager客户端脚本不会使用 ScriptManager 执行
【发布时间】:2011-04-08 09:41:21
【问题描述】:
  1. 我有一个用户控件,它有一个 更新面板
  2. 我正在尝试执行客户端 来自异步回发的脚本 更新面板内的按钮
  3. 我正在使用 ScriptManager.RegisterStartupScript 执行脚本,但它永远不会 被执行
  4. scriptmanager 代理不是 在用户控件本身内部 在包含用户的页面中 控制
  5. 有没有办法解决这个问题?

脚本注册:

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

谢谢,达米恩。

【问题讨论】:

    标签: asp.net updatepanel scriptmanager


    【解决方案1】:

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

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

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

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

    应该可以解决您的问题。 btnUpdate 这是您内部的按钮 UpdatePanel 导致回发(您在第 2 段中提到了这一点)。

    【讨论】:

    • 谢谢亚历克斯。您的回复对所有解释和链接都非常有帮助。
    猜你喜欢
    • 2014-11-06
    • 2011-02-05
    • 2013-12-21
    • 2015-07-17
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2019-01-23
    相关资源
    最近更新 更多