先使用 JSInvokable 特性标注一个 C# 方法为允许 JavaScript 调用:
<button type="button"> Trigger .NET static method ReturnArrayAsync </button> @code { [JSInvokable] public static Task<int[]> ReturnArrayAsync() { return Task.FromResult(new int[] { 1, 2, 3 }); } }然后在 JavaScript 代码中调用 C# 代码:
window.exampleJsFunctions = { ... returnArrayAsyncJs: function () { DotNet.invokeMethodAsync('BlazorSample', 'ReturnArrayAsync') .then(data => { data.push(4); console.log(data); }); }, ... }; 其它对我来说 Blazor 最吸引的优点是前后端代码的共用以及组件的重用。通过 nuget 管理和引用共用组件和库不仅比 npm 包管理方便,而且体积也小很多。
Blazor 的生态也正逐步发展起来了,虽然还没有听说哪个大公司在用,但 Blazor 的理念是未来趋势,值得你花点时间了解和研究一下。