带有 Blazor InputFile 组件的“无法读取属性 '_blazorFilesById' 的空错误”

Posted

技术标签:

【中文标题】带有 Blazor InputFile 组件的“无法读取属性 \'_blazorFilesById\' 的空错误”【英文标题】:"Cannot read property '_blazorFilesById' of null error" with Blazor InputFile component带有 Blazor InputFile 组件的“无法读取属性 '_blazorFilesById' 的空错误” 【发布时间】:2021-05-04 12:24:03 【问题描述】:

我的 Blazor WebAssembly 应用开始出现此错误:

“无法使用 Blazor 应用读取属性 '_blazorFilesById' 的 null 错误”

我假设这与我正在使用的 InputFile component 有关,它一直运行良好。

我试过重启 VS、清理和重建、重启 IIS 和杀死 Chrome 都无济于事。这可能是什么原因造成的?

【问题讨论】:

【参考方案1】:

原来这是因为我添加了条件代码来隐藏页面上的InputFile 组件。这样做会导致如this post on GitHub by BtbN 中所述的错误:

你是否修改了你的页面,所以 InputFile 元素没有被渲染 不再?它必须保持存在,否则浏览器会清理任何 与之相关的资源。

【讨论】:

【参考方案2】:

我尝试将 InputFile 组件保留在 Div 中,并且有条件地(基于 bool @uploadingInProgress)隐藏 Div(尤其是在上传过程中)完美地工作

【讨论】:

以上是关于带有 Blazor InputFile 组件的“无法读取属性 '_blazorFilesById' 的空错误”的主要内容,如果未能解决你的问题,请参考以下文章

Blazor University 组件 — 创建组件

身份剃须刀页面中的 Blazor 组件

Blazor:如何存储页面状态(所有组件状态)?

从 Blazor 中的页面组件调用 MainLayout 中的方法

在 Blazor 中将值从子组件传递到父页面的良好做法?

拖动滚动条时 Blazor Virtualize 组件和滚动中断