【问题标题】:Run JavaScript from C# ASP.NET从 C# ASP.NET 运行 JavaScript
【发布时间】:2023-04-08 07:04:02
【问题描述】:

我正在尝试从 C# 中的代码运行 javascript 函数。我在互联网上查看了许多资源,但到目前为止还没有运气。这甚至不适用于我拥有的非常简单的示例代码:

后面的代码:

  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>

当我运行它时,我得到:

0x800a1391 - JavaScript 运行时错误:“a”未定义

注意:

也试过了:

  • ScriptManager.RegisterStartupScript(this,GetType(),"a","a()", true);
  • ScriptManager.RegisterStartupScript(this,GetType(),"a","a", true);

仍然遇到同样的错误。

未来读者注意:诀窍是使用 ASP 更新面板。我没有找到一个单一的来源来指出这个非常重要的事实。

【问题讨论】:

  • 你不应该使用只有 1 个字符的标识符 "a" 或命名对象或类似的方法。现在,调试的第一步:ScriptManager.RegisterStartupScript(this,GetType(),"myDebugAlert","alert('My script is OK');", true); 有效吗?你可以告诉我是的,那我可以告诉你这是因为当你的脚本注册 StartupScript 时你的a() 函数不存在。
  • a 仅用于测试。我厌倦了在这里简化我的代码。是的,我直接在ScriptManager.RegisterStartupScript(this,GetType(),"a","alert('test');", true) 后面的代码上运行它。

标签: javascript c# asp.net vb.net


【解决方案1】:

在您的按钮单击事件处理程序中,注册启动脚本为时已晚。你必须尽快这样做。查看 asp.net 页面生命周期。

我在Page_Load 事件中做了和你一样的事情,即使使用a() 标识符,它也能完美运行。我已将一个工作示例上传到我的 Onedrive 公用文件夹。见here。查看default.aspxdefault.cs 文件的内部。

default.aspx

    <script type="text/javascript">
        function a(msg) {
            alert(msg);
        }

    </script>

default.cs

    protected void Page_Load(object sender, EventArgs e)
    {
        ClientScript.RegisterStartupScript(typeof(Page), "a", "a('hello world');", true);
    }

【讨论】:

  • 复制我的答案并善待我好吗?我没有不尊重(就像你对我所做的那样),我只是给世界公认的建议。
  • @MacKentoch 我根本不认为这是你的答案。您的评论根本没有帮助。
【解决方案2】:
  • 只要在UpdatePanel 内,就可以在任何地方使用ScriptManager.RegisterStartupScript

现在告诉你的 a() 是一个 javascript 函数:

ScriptManager.RegisterStartupScript(this,GetType(),"a","javascript:a();", true);

【讨论】:

  • @Michal Hainc 是对的。我走的路(不是通用收据^^)是使用master page用于导航和页脚(不需要经常刷新)),我所有的页面都是来自这个大师的内容更新面板内的页面。就像我所有的网站都可以使用ajax。 **现在,很高兴你现在可以了。也感谢@Michal Hainc。希望你编码愉快,玩得开心!
猜你喜欢
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
相关资源
最近更新 更多