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

5
这是我的JavaScript函数:
function WantToSave()
{
    alert('You should save now !');
}

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

而这是我的ASP.NET代码后台:

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

RegisterStartupScript 函数已经被调用了,这是确定的。但它并没有触发我的 JavaScript 函数。那第二个参数,它应该是“起始脚本的键”,但我应该在那里放什么呢?


http://stackoverflow.com/a/5325787/2777098 - display name
4个回答

8
默认情况下,脚本会被写入输出,但没有包含 <script> 标签。如果您使用浏览器的 JavaScript 控制台或查看客户端上的结果 HTML,那么您可能已经注意到了这一点。请确保熟悉这些工具。
您可以使用方法的稍微不同的重载来让它为您添加脚本标记。 参考链接
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();", true);

或者您可以自己添加它们:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "<script>WantToSave();</script>");

关键字串和控件注册的类型的组合起来,用于唯一标识已注册的脚本。如果您以后想要注销它或用不同的脚本替换它,这将非常有用。因此,关键字并不必须是特定的内容,只需要是独一无二的即可。


1
谢谢 @mason,那"MyKey"呢?我可以在那里写任何东西吗?为什么? - Antoine Pelletier
3
@AntoinePelletier 正确。关键字符串和控件注册的类型的组合用于唯一标识已注册的脚本,以便以后您想要注销它或用不同的脚本替换它时使用。因此,关键字并不需要具体指定什么,只需是独特的即可。 - mason
谢谢 @mason - 这正是我所需要的。 - SaiBand

3
你可以使用脚本管理器注册启动脚本方法。它有一个布尔参数(最后一个)叫做add script tags,可以为您添加脚本标记。
ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "WantToSave();",true); 

这非常有趣!特别是Guid.NewGuid()函数,它允许我随意显示警报。感谢@Jhon Paul。 - Antoine Pelletier

1
你应该尝试这个:

var name = "WantToSave";
var script = "<script>alert('You should save now !');</script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), name, script);

或者您可以在调用时添加一个true参数,以指定添加脚本标签。
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();",true);

0

根据MSDN的说法,使用此重载,您必须将调用包装在<script></script>标记中,因此应该这样做:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "<script>WantToSave();</script>");

或使用另一个重载

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接