C# 插入的Javascript不';从updatepanel事件调用时不显示

C# 插入的Javascript不';从updatepanel事件调用时不显示,c#,javascript,asp.net,updatepanel,C#,Javascript,Asp.net,Updatepanel,为什么按钮单击事件不能成功插入脚本 下面是非常简单的代码 C#: public分部类\u默认值:System.Web.UI.Page { 受保护的无效页面加载(对象发送方、事件参数e){ RegisterStartupScript(Page.GetType(),“scriptalert”,“alert('testLOAD');;”,false); btnAdd.Click+=新建事件处理程序(btnAdd_已单击); } 已单击受保护的无效btnAdd_(对象发送者,System.EventAr

为什么按钮单击事件不能成功插入脚本

下面是非常简单的代码

C#:

public分部类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e){
RegisterStartupScript(Page.GetType(),“scriptalert”,“alert('testLOAD');;”,false);
btnAdd.Click+=新建事件处理程序(btnAdd_已单击);
}
已单击受保护的无效btnAdd_(对象发送者,System.EventArgs e){
RegisterStartupScript(Page.GetType(),“scriptfunc”,“func();;”,false);
}
}

HTML:


警报(“测试脚本”);
函数func(){
警报(“testFUNC”);
}
布拉布拉布拉赫
在页面加载时,我收到两个警报,即“testLOAD”和“testSCRIPT”,但当我按下按钮时,什么也没有发生(应该有第三个警报)。。。签入调试器后,将调用并运行该事件,但在查看页面源代码时,未插入任何内容


我怀疑问题可能出在其他地方,因为将其复制粘贴到没有母版页(即没有ASP:Content标签)的新页面是可行的。但是,我在其他脚本插入方面没有遇到任何问题,那么为什么会出现这个问题呢?

问题是因为按钮位于更新面板中。为了克服这个问题,我认为可以使用ScriptManager而不是ClientScript.RegisterStartupScript方法。像下面这样的东西应该可以做到这一点

ToolkitScriptManager1.RegisterStartupScript(this, typeof(Page), UniqueID, "<script type=\"text/javascript\">func();</script>;", true);
ToolkitScriptManager1.RegisterStartupScript(this,typeof(Page),UniqueID,“func();”,true);
而不是

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);
ClientScript.RegisterStartupScript(Page.GetType(),“scriptfunc”,“func();;”,false);

你应该试试这样的方法

string script=“警报('something');”

this.ClientScript.registerclientscriptblock(this.GetType(),“scriptfunc”,script,true)


或者将函数放在page_load事件中,并调用Button.OnClientClick属性中的函数。

我发现了问题所在^^

我插入的脚本中有一个零散的分号,这使它中断了:/

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);
ClientScript.RegisterStartupScript(Page.GetType(),“scriptfunc”,“func();;”,false);

如此愚蠢的错误引起了如此多的挫折。。。对不起,伙计们

在这种情况下,使用OnClientClick是没有用的,因为我想在代码背后运行一些东西,然后执行javascript。虽然它确实以这种方式调用函数,但javascript会在我希望它运行之前运行。我有另一个页面,在更新面板中它可以正常工作。我尝试了该代码,它说不能从实例调用“RegisterStartupScript”,我认为这是一个静态方法。使用“ScriptManager”而不是“ClientScript”也不能解决问题。
ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);
ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);