如何从Asp.Net Code Behind调用JavaScript函数?

这是我的JavaScript函数:

function WantToSave() { alert('You should save now !'); } 

这是我的ASP.NET代码背后:

 Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();"); 

到达RegisterStartupScript函数,这是肯定的。 但它不会触发我的JavaScriptfunction。 而第二个参数,它应该是一个“起始脚本的关键”是的,但我应该把它放在那里?

默认情况下,脚本将写入输出但没有标记。 如果您使用浏览器的JavaScript控制台或在客户端上查看生成的HTML,您可能会注意到这一点。 确保您熟悉这些工具。

您可以使用稍微不同的方法重载为它添加脚本标记。

 Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();", true); 

或者你可以自己添加:

 Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", ""); 

密钥字符串和控件注册类型的组合用于唯一标识已注册的脚本,以防您以后要取消注册或用其他脚本替换它。 所以关键不一定要具体,只需要一些独特的东西。

您可以使用脚本管理器注册启动脚本方法。 它有一个bool参数(最后一个),称为添加脚本标记,为您添加脚本标记。

 ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "WantToSave();",true); 

你应该试试这个:

 var name = "WantToSave"; var script = ""; Page.ClientScript.RegisterStartupScript(this.GetType(), name, script); 

或者您应该在调用结束时添加一个true参数,该参数指定添加脚本标记。

 Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();",true); 

根据MSDN使用此重载,您必须将您的调用包装在标记中,因此您将执行以下操作:

 Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", ""); 

或使用其他过载

 Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();", true); 

这将根据布尔参数添加或不添加它们。