blazor - 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
解决方案
对不起,这没关系,现在我已经解决了。我在类的顶部这样做(这是一个普通的类,而不是在一个组件内):
[Inject]
IJSRuntime JSRuntime { get; set; }
如果我通过构造函数中的 DI 获取 JSRuntime,它就可以工作。
推荐阅读
- r - 问题是,在转换为日期时,NULL 值被替换为 NA
- apache-spark - trigger.Once() 需要元数据
- javascript - 完全以编程方式更改 div 内容
- ruby-on-rails - rails迁移:检查是否存在多个列
- python - 提高 pandas python 的性能
- vue.js - Vuex 使用 store 操作更新状态
- flutter - 如何为 Snackbar 添加边距或填充?
- javascript - 有什么方法可以使用 jquery 在同一页面上显示 div?div 类有参数。所以正常的 Div.show() 不起作用,因为我们无法在其中传递参数对象
- c# - Json 字符串到 Xml
- angular - 如何在测试中模拟 Angular 5 中的 js 导入?