Blazor JavaScript 互操作性
关于 JavaScript 位置 在 <head> 标记中加载脚本 <head> <script src="js/first.js"></script> <script> window.jsMethod = (methodParameter) => { ... }; </script> </head> 在 <body> 标记中加载脚本 <body> <script src="js/first.js"></script> <script> window.jsMethod = (methodParameter) => { ... }; </script> </body> 组件并置 组件:CountComponent.razor 组件:CountComponent.razor.cs 样式:CountComponent.razor.css 脚本:CountComponent.razor.js 从.NET 调用 JS 在 wwwroot 下创建 app.js 文件 function helloWorld() { alert('Hello World'); } function add(a, b) { return a + b; } 在 App.razor 中引入 JS 文件 当前 Web 项目脚本引入 <head> <script src="@Assets["app.js"]"></script> </head> 如果使用了 RCL 组件库 <head> <script src="_content/LibraryName/app.js"></script> </head> 在 .NET 组件中调用 JS 方法 @inject IJSRuntime JS <button class="btn btn-primary" @onclick="SayHello">SayHello</button> <button class="btn btn-primary" @onclick="Add">Add</button> <p>Current count: @result</p> @code { private int result = 0; private async Task SayHello() { await JS.InvokeVoidAsync("helloWorld"); } private async Task Add() { result = await JS.InvokeAsync<int>("add", result, 1); StateHasChanged(); } } 基于模块化的 JS 文件 export function helloWorld() { alert('Hello World'); } export function add(a, b) { return a + b; } 在 MyComponent.razor 组件中写如下代码 ...