我正在尝试运行一个名为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
答案 0 :(得分:1)
对不起,现在我已经解决了这个问题。我在类的顶部(这是一个普通的类,而不是组件内)进行此操作:
[Inject]
IJSRuntime JSRuntime { get; set; }
如果我通过构造函数中的DI获得JSRuntime,它就可以工作。
答案 1 :(得分:0)
对于来自google的其他用户,您必须以传统方式注入
public class MyClass
{
private readonly IJSRuntime _jSRuntime;
public MyClass (IJSRuntime jSRuntime)
{
_jSRuntime = jSRuntime;
}
}