如何从 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,您必须将呼叫包装在 <script></script>
标记中,因此您可以这样做:
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 C# 中的字符串中提取 C#/PHP/Code/SQL
从Script到Code BlocksCode Behind到MVCMVPMVVM(转载)