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

Posted

技术标签:

【中文标题】如何从 Asp.Net Code Behind 调用 JavaScript 函数?【英文标题】:How do I call a JavaScript function from Asp.Net Code Behind? 【发布时间】:2015-12-06 19:13:03 【问题描述】:

这是我的 javascript 函数:

function WantToSave()

    alert('You should save now !');

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

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

已经达到RegisterStartupScript 函数,这是肯定的。但它不会触发我的 JavaScript 函数。第二个参数应该是“启动脚本的键”,是的,但是我应该放什么?

【问题讨论】:

***.com/a/5325787/2777098 【参考方案1】:

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

您可以让它使用slightly different overload 方法为您添加脚本标签。

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

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

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

键字符串和控件注册类型的组合用于唯一标识注册的脚本,以防您以后想取消注册或用不同的脚本替换它。因此,密钥不必是特定的,只要是独特的即可。

【讨论】:

谢谢@mason,那么“MyKey”呢,我可以在那里写什么吗?为什么? @AntoinePelletier 正确。键字符串和控件注册类型的组合用于唯一标识注册的脚本,以防您以后想取消注册或用不同的脚本替换它。因此,密钥不必是特定的,只要是独特的即可。 谢谢@mason - 这正是我所需要的。【参考方案2】:

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

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

【讨论】:

这很有趣!特别是对于 Guid.NewGuid() 函数,它允许我尽可能频繁地显示警报。谢谢@Jhon Paul【参考方案3】:

根据使用此重载的 MSDN,您必须将呼叫包装在 &lt;script&gt;&lt;/script&gt; 标记中,因此您可以这样做:

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

或使用其他重载

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

是否添加它们取决于布尔参数。

【讨论】:

【参考方案4】:

你应该试试这个:

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);

【讨论】:

以上是关于如何从 Asp.Net Code Behind 调用 JavaScript 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net 中反序列化 Json-Object

将字符串或属性传递给 WPF Code Behind

如何从 ASP.net C# 中的字符串中提取 C#/PHP/Code/SQL

从Script到Code BlocksCode Behind到MVCMVPMVVM(转载)

JavaScript:来自 ASP.NET 代码隐藏的 Alert.Show(message)

如何知道 ASP.NET 中控制器索引的调用者路由?