如何从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);
这将根据布尔参数添加或不添加它们。