Blazor(客户端/ wasm)JSInvoke“值不能为空”错误

时间:2020-01-07 12:46:24

标签: blazor blazor-client-side

我正在尝试运行一个名为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 

2 个答案:

答案 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;
        }
     }