【问题标题】:Why is my Blazor @onclick MouseEventArg not working?为什么我的 Blazor @onclick MouseEventArg 不起作用?
【发布时间】:2021-03-15 15:42:14
【问题描述】:

我的 Blazor (.NET 5) 项目中有一个简单的 .RAZOR 组件,如下所示:

<div>
    <input id="searchInput" type="text" name="queryString" @bind="queryString" />
    <button type="button" @onclick="PerformSearch">Search</button>
</div>

@code {
    public String queryString;

    public void PerformSearch()
    {
        Console.WriteLine("Why aren't you working? - " + queryString);
    }
}

但是,当我单击按钮时,PerformSearch 根本不会被调用。我的代码中没有错误(编译时或运行时)。当我在Console.Writeline() 行设置断点时,它根本不会到达那里,并且日志中没有任何内容可以告诉我为什么会(或不会)发生这种情况。

【问题讨论】:

  • 您是否 100% 确定您正在查看您认为的页面? (代码看起来不错)
  • 我是,这很奇怪。我用 just 这个组件创建了一个新项目,它工作得很好。显然,在我更大的主要项目中,有一些东西正在对我这样做,但我不知道是什么,这让我很生气。

标签: c# blazor .net-5


【解决方案1】:

所以,我发现了问题所在。我删除了这一行:

<script src="_framework/blazor.server.js"></script>

来自_Host.cshtml 页面。当我把它放回行尾时:

        <script src="~/js/jquery/jquery-3.5.1.slim.min.js"></script>
        <script src="~/js/popper/popper.min.js"></script>
        <script src="~/js/bootstrap/bootstrap.min.js"></script>
        <script src="~/js/JavaScript.js"></script>
        <script src="_framework/blazor.server.js"></script>
    </body>
</html>

一切都重新开始了。

这就是破坏我的页面的事实,这令人愤怒,因为微软对 Blazor 的一大卖点是它不需要 JavaScript。

猜不出来。


编辑:要标记到我的这个答案,blazor.server.js 将阻止您的任何其他 JavaScript 工作,无论它是在阵容中列出的第一个还是最后一个。为了让您的 JavaScript 或 Blazor、jQuery 等工作,您需要关注 THIS StackOverflow 答案。

我希望这会有所帮助。

【讨论】:

  • 我认为“Blazor 不需要 JavaScript”是一个很大的误解,而且肯定不会出现在 Microsoft 的任何消息中。事实上,有很多事情 Blazor 只能通过 JavaScript 完成,因为 JavaScript 是浏览器公开该功能的唯一方式。 “blazor.server.js”文件一直是框架的关键部分。
  • 已经专门编写了几个 Blazor 库来封装必要的 JavaScript 互操作(例如访问 localStorage),以便其他开发人员可以编写 C#,而不必费心编写所需的少量 JavaScript。但它的底层仍然是 JavaScript。
  • 当然可以编写一个功能齐全的 Blazor 应用程序,而无需编写一行 JavaScript,即使在幕后发生了大量 JavaScript。
  • 所以不要气馁,也不要认为 Blazor 应用程序中的 either JavaScript C#。运行事物的引擎是两者的结合。
  • Blazor 的很大一部分(可以说是主要部分)是编写 UI,它操纵 DOM。这在 WebAssembly 中是不可能的,所以自然需要 JS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 2021-09-30
相关资源
最近更新 更多