«Не удается прочитать свойство ‘_blazorFilesById’ с нулевой ошибкой» с помощью Blazor InputFile component

#c# #blazor #blazor-webassembly #blazorinputfile

#c# #blazor #blazor-webassembly #blazorinputfile

Вопрос:

Я начал получать эту ошибку из моего приложения Blazor WebAssembly:

«Не удается прочитать свойство ‘_blazorFilesById’ с нулевой ошибкой» с помощью приложения Blazor

Я предполагаю, что это связано с используемым мной InputFile компонентом, который работает нормально.

Я пытался перезапустить VS, очистить и перестроить, перезапустить IIS и уничтожить Chrome, но все безрезультатно. Что может быть причиной этого?

Ответ №1:

Оказывается, это связано с тем, что я добавил условный код, чтобы скрыть InputFile компонент на странице. Выполнение этого приведет к ошибке, как описано в this post на GitHub by BtbN:

Вы изменили свою страницу, чтобы элемент InputFile больше не отображался? Он должен оставаться присутствующим, в противном случае браузер очищает все связанные с ним ресурсы.

Комментарии:

1. Хороший совет. У меня был контроль ввода файла в модальном окне. Внутри модального окна был запущен поток для обработки файла, но модальное окно быстро закрылось до завершения потока и получило ту же ошибку.

Ответ №2:

Я попытался сохранить компонент InputFile внутри Div и условно (на основе bool @uploadingInProgress) скрыть Div (особенно во время выполнения загрузки) работает отлично

Ответ №3:

это происходит потому, что вы, скорее всего, вызываете StatehasChanged в функции onchange