首页 > 解决方案 > Blazor(客户端/wasm)JSInvoke“值不能为空”错误

问题描述

我正在尝试运行一个名为 loadJsOrCssFile 的 javascript 函数,该函数使用以下代码获取 2 个字符串参数:

await JSRuntime.InvokeAsync<string>("loadJsOrCssFile", $"/brands/{_brand.BrandId}/brand{_brand.BrandId}_{_brand.CSSFileVersionNo}.css", "css");

但我收到一个错误(来自 Chrome 开发工具控制台):

blazor.webassembly.js:1 WASM: System.ArgumentNullException: Value cannot be null.
h.printErr @ blazor.webassembly.js:1
12:37:36.127 blazor.webassembly.js:1 WASM: Parameter name: jsRuntime
h.printErr @ blazor.webassembly.js:1
12:37:36.127 blazor.webassembly.js:1 WASM:   at Microsoft.JSInterop.JSRuntimeExtensions.InvokeAsync[TValue] (Microsoft.JSInterop.IJSRuntime jsRuntime, System.String identifier, System.Object[] args) <0x281f210 + 0x00014> in <3eedf0ca90ca4e72bf6870618ca98c7c>:0 

标签: blazorblazor-client-side

解决方案


对不起,这没关系,现在我已经解决了。我在类的顶部这样做(这是一个普通的类,而不是在一个组件内):

[Inject]
IJSRuntime JSRuntime { get; set; }

如果我通过构造函数中的 DI 获取 JSRuntime,它就可以工作。


推荐阅读