ScriptManager.RegisterStartupScript代码不起作用 - 为什么?

时间:2011-02-14 15:36:52

标签: javascript asp.net scriptmanager

我过去曾使用过这样的代码在我的asp.net网页上成功弹出警告消息。现在它不起作用。我无法弄清楚原因。

ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, 
     "alert('This pops up')", true);

有什么想法吗?

4 个答案:

答案 0 :(得分:41)

脱离我的头顶:

  • 使用GetType()代替typeof(Page),以便将脚本绑定到实际的页面类而不是基类,
  • 传递一个密钥常量而不是Page.UniqueID,这不是那么有意义,因为它应该由命名控件使用,
  • 以分号
  • 结束您的Javascript语句
  • PreRender阶段注册脚本:

protected void Page_PreRender(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, GetType(), "YourUniqueScriptKey", 
        "alert('This pops up');", true);
}

答案 1 :(得分:19)

试试这段代码......

ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "script", "alert('Hi');", true);

UpdatePanel1是您网页上id的{​​{1}}

答案 2 :(得分:1)

如果导致脚本的控件位于updatepanel内,则必须将updatepanel id放在第一个参数中,否则请使用关键字' this'而不是更新面板这里是代码

ScriptManager.RegisterStartupScript(UpdatePanel3, this.GetType(), UpdatePanel3.UniqueID, "showError();", true);

答案 3 :(得分:0)

我遇到了类似的问题。然而,这个问题是由于我设计页面以引入请求的方式引起的。我将所有的.js文件放在最后应用于页面的内容上,因此它们位于我的文档末尾。 .js文件包含我的所有功能。脚本管理器似乎能够调用此函数它需要js文件已经存在与加载时调用的函数。希望这有助于其他任何人。