【问题标题】:Why onclick event triggered when page is reloaded为什么在重新加载页面时触发onclick事件
【发布时间】:2022-01-10 23:37:03
【问题描述】:

所以,我的 .cshtml 文件中有一个按钮:

<div>
    <button id='btn-next' name='next' type='button' onclick='function f() {
         @{ 
            Console.WriteLine("BeforeCalling");
            myClass test = new myClass();
            test.TestMethod("123");
            Console.WriteLine("AfterCalling");
          }
          }' class='btn btn-block btn-secondary'>justAButton</button>
</div>

当我的页面重新加载时,为什么它会“点击”(我在终端中看到控制台输出)?但是,如果我手动单击按钮 - 什么也不会发生。它仅适用于页面重新加载。

【问题讨论】:

    标签: c# asp.net twitter-bootstrap razor


    【解决方案1】:

    onclick 是一个客户端 JavaScript 事件处理程序。所以无论你想做什么都发生在用户的浏览器中。

    然而,Razor 语法由服务器执行任何东西被发送到客户端。 Razor 正在执行以生成服务器发送给用户的 HTML,然后由浏览器解释。但在浏览器呈现 HTML(并注册任何 JavaScript 事件处理程序)时,服务器已经完成。

    所以这基本上意味着您不能让服务器端代码作为客户端事件的一部分运行。当生成 HTML 并且没有任何逻辑发送到客户端时,您的 Razor 代码将运行(您可以通过查看浏览器中的 HTML 源代码来检查)。

    如果您希望服务器在客户端事件发生时执行某些操作,您需要让客户端(=浏览器)与服务器进行通信,例如使用 AJAX 请求。或者,如果您想在不必处理 JavaScript 的情况下解决此问题,您可以研究 Blazor。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      相关资源
      最近更新 更多