首页 > 解决方案 > Blazor 服务器 JavaScript 调用数据传输

问题描述

幸运的是,我们可以轻松地从 Blazor 服务器的 C# 代码调用 JavaScript 函数,请参阅此 MSDN 页面。JavaScript 代码将在客户端的浏览器上运行,C# 代码在服务器上运行,Blazor 的 SignalR 连接位于这两​​者之间。

但我要求澄清 SignalR 连接是否是负责在这两者之间来回传输函数的输入/输出值的连接。我能找到的唯一提示来自Chris Sainty 的博客

您会注意到这两种方法都是异步的。这很重要,因为如果您希望您的代码在客户端和服务器端 Blazor 中工作,那么由于服务器端 Blazor 使用 SignalR 连接,所有 JS 互操作调用都必须是异步的。

不幸的是,我在 MSDN 页面上找不到有关如何传输值的确切信息。

在通过 JavaScript 运行时(例如使用 Firebase Firestore JavaScript 库)获取数据的情况下,如何传输数据可能很重要。如果需要将获取的数据发送回 Blazor 服务器以将所需的更改推送到 DOM,会不会有额外的往返行程?

标签: blazorblazor-server-sidejavascript-interop

解决方案


Blazor 不会知道 JavaScript 对 DOM 所做的更改。因此,允许 JavaScript 对 DOM 进行更改并不是一个好主意。干净的方法是通过 JSInterop 调用 Blazor,而不是通过 JS 更改 DOM。而最好的办法就是不使用JS。


推荐阅读