Blazor 和 Visual Studio 中的 InputFile 在哪里?

Where is InputFile in Blazor and Visual Studio?

据我了解,在 Blazor 中使用 .NET 5 我应该能够使用 InputFile。我没有那个选项。我在 VS 16.8 上,我在 Blazor Web Assembly 项目(使用 .Net Standard 2.1)中安装了 .net 5 SDK,使用 .Net Core Hosted(使用 .Net 5),但 InputFile 未被识别为有效语法。我错过了一些很明显的东西吗?

我认为它应该只在 .razor 文件中“工作”(假设您的目标是 net5.0)。我在 Blazor Server 应用程序中使用它,没有任何额外的 using 语句。它是 Microsoft.AspNetCore.Components.Forms 命名空间

的一部分
@page "/"
@using server.Data //this is specific to my app
@using server.Data.Util //this too
@inject IJSRuntime js //this is just the js interop

...

<InputFile OnChange="@HandleFileSelectedAsync" />

<section>
    @if (_uploading)
    {
        <p>Uploading...</p>
        <div class="loader"></div>
    }
...

更新:我还注意到我的项目中有一个 _Imports.razor 文件,它一定是在我创建新项目时由 VisualStudio 创建的。它看起来像这样:

@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms //InputFile in here
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.JSInterop
...

visual studio 的模板尚未更新,因此它仍然以 .NET 标准为目标,而不是 .NET 5。使用本指南 https://www.davideguida.com/how-to-migrate-blazor-webassembly-to-net-5/

根据 Mario 的建议,Blazor 应用程序应该以 .net 5.0 为目标,我转到项目属性,发现它默认以 .net core 3.1 为目标。

将目标更改为 .net 5.0 使其工作。

谢谢!