javascript - 将数组传递给 blazors IJSRuntime.InvokeAsync

标签 javascript blazor blazor-webassembly

我想知道将数组传递给 IJSRuntime.InvokeAsync 的最佳方法是什么? .
我偶然发现的问题是 blazor 会将数组的每个元素作为参数传递给 javascript 函数,因为 InvokeAsync 有一个开放的参数列表,并且不知道您是否只是传递了相同类型的参数或数组。
现在我只使用第二个参数,如 InvokeAsync("functionname", array, false) .
还有其他建议吗?更好的解决方案?

最佳答案

您要么必须将数组转换为 object * 或者直接调用Extension方法:

var array = Array.Empty<Baz>();
// Casting to object
JS.InvokeAsync<Foo>("bar", (object)array);

// Explicitly call the extension method:
JSRuntimeExtensions.InvokeAsync<Foo>(JS, "bar", array);
或者只是使用它认为你试图调用的重载:
JS.InvokeAsync<Foo>("bar", new object[] { array });
* 基于我对 C#'s Overload Resolution 的有限了解.

关于javascript - 将数组传递给 blazors IJSRuntime.InvokeAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68654640/

相关文章:

async-await - 页面加载时的 Blazor 和 ContinueWith

azure - Blazor WASM 静态 Web 应用程序直接与 CosmosDB 通信,无需 azure 功能

visual-studio-code - Blazor WASM 独立调试停止工作

c# - 如何在发布服务器项目而不是客户端的 Azure DevOps 上为 Blazor WebAssembly 托管应用程序创建构建管道?

javascript - Angularjs-UI Bootstrap : Accordion Open and close all

javascript - 快速路由为每个请求的文件响应index.html

javascript - 在play框架中从javascript调用java函数

javascript - 使用 Javascript 按属性值拆分对象数组

c# - 在 AWS "Error: Cannot send data if the connection is not in the ' Connected'State 上部署了 blazor 服务器应用程序。”但适用于本地主机

blazor - Blazor WebAssembly Server 项目如何引用客户端索引?