从C#ASP.NET运行JavaScript
我试图从C#中的代码中运行javascript函数。我在网上查阅了很多资源,但到目前为止还没有找到。这甚至不适用于我拥有的非常简单的示例代码: 代码隐藏:从C#ASP.NET运行JavaScript,javascript,c#,asp.net,vb.net,Javascript,C#,Asp.net,Vb.net,我试图从C#中的代码中运行javascript函数。我在网上查阅了很多资源,但到目前为止还没有找到。这甚至不适用于我拥有的非常简单的示例代码: 代码隐藏: protected void Button2_Click(object sender, EventArgs e) { ScriptManager.RegisterStartupScript(this,GetType(),"a","a();", true); } 在我的aspx文件中: <script typ
protected void Button2_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this,GetType(),"a","a();", true);
}
在我的aspx文件中:
<script type="text/javascript">
function a()
{
var i = 0;
}
</script>
函数a()
{
var i=0;
}
当我运行此命令时,我得到:
0x800a1391-JavaScript运行时错误:“a”未定义
注:
还尝试:
- RegisterStartupScript(this,GetType(),“a”,“a()”,true)李>
- RegisterStartupScript(this,GetType(),“a”,“a”,true)李>
未来读者注意:诀窍是使用ASP更新面板。我没有找到任何一个源代码来指出这一非常重要的事实。在按钮单击事件处理程序中,注册启动脚本为时已晚。你必须早点做。请参阅asp.net页生命周期 我在
Page\u Load
事件中做了与您相同的操作,即使使用a()
标识符,它也能完美地工作。我已将工作示例上载到我的Onedrive公用文件夹。看见查看default.aspx
和default.cs
文件
default.aspx
<script type="text/javascript">
function a(msg) {
alert(msg);
}
</script>
- 在任何位置使用ScriptManager.RegisterStartupScript,只要它位于
UpdatePanel
a()
是一个javascript函数:
ScriptManager.RegisterStartupScript(this,GetType(),"a","javascript:a();", true);
决不能将标识符仅与1个字符
“a”
或命名对象或类似方法一起使用。现在,调试的第一步:ScriptManager.RegisterStartupScript(这个,GetType(),“myDebugAlert”,“alert('My script is OK');”,true)代码>有效吗?您可以告诉我是的,然后我可以告诉您这是因为当您的脚本注册为StartupScript时,您的a()
函数不存在。a仅用于测试。我厌倦了在这里简化我的代码。是的,我直接在ScriptManager.RegisterStartupScript后面的代码上运行它(这个,GetType(),“a”,“alert('test');”,true)
它可以工作。复制我的答案并治疗我好吗?我并没有不尊重(就像你们对我一样),我只是给了全世界公认的建议。@MacKentoch我根本不认为这是你们的答案。你的评论毫无帮助。@Michal Hainc是对的。我的方式(不是万能收据^^^)是使用母版页
(用于导航和页脚(不需要经常刷新)),我的所有页面都是更新面板中此母版页的内容。这样,我的所有网站都可以使用ajax**现在,很高兴你现在没事了。谢谢@Michal Hainc。希望你很好的编码和乐趣!
ScriptManager.RegisterStartupScript(this,GetType(),"a","javascript:a();", true);