Javascript ScriptManager.RegisterStartupScript代码不工作-为什么?

Javascript ScriptManager.RegisterStartupScript代码不工作-为什么?,javascript,asp.net,scriptmanager,Javascript,Asp.net,Scriptmanager,我过去曾使用类似的代码在我的asp.net网页上成功地弹出一条警告消息。现在它不起作用了。我不明白为什么 ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, "alert('This pops up')", true); 有什么想法吗?在我的脑海里: 使用GetType()而不是typeof(Page)将脚本绑定到实际的页面类而不是基类 传递一个键常量,而不是Page.UniqueID,这没有什么意义

我过去曾使用类似的代码在我的asp.net网页上成功地弹出一条警告消息。现在它不起作用了。我不明白为什么

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

有什么想法吗?

在我的脑海里:

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

请尝试此代码

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

其中
UpdatePanel1
是您页面上
Updatepanel
id

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

如果导致脚本的控件位于updatepanel中,则必须将updatepanel id放在第一个参数中,否则请使用关键字“this”而不是“update panel”。下面是代码

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

我尝试了ScriptManager.RegisterStartupScript(这个,typeof(Page),“12344”,“警报('thispoop')”,true);这对我来说非常好。检查页面的源代码,看看它是否发出代码,这是否正常。这是因为向ScriptManager注册脚本只是注册。你需要一些东西来启动它,比如一次点击按钮不,我不能工作。您必须使用当前UpdatePanel的ID而不是“this”@vNext,这是什么意思?第一个参数是
控件
页面
,这取决于所使用的重载,而不是字符串。如果您在Ajax UpdatePanel中有一个转发器,并且您尝试从转发器的OnItemCommand注册javascript,则必须这样做。这肯定是首选答案。
ScriptManager.RegisterStartupScript(UpdatePanel3, this.GetType(), UpdatePanel3.UniqueID, "showError();", true);