0

我有一个使用 BlazorInputFile 的简单文件上传。我可以添加一个文件,它会点击我指定的 onChange 函数,但是文件的名称永远不会出现在屏幕上,当我提交表单时,它说它是空的。

表格:

       <EditForm Model="@Item" OnValidSubmit="@SubmitForm">
            <DataAnnotationsValidator />
            <div class="modal-body">
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                            <label>File</label>
                            <InputFile OnChange="LoadFile"/>
                        </div>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="submit" class="btn btn-success">Save changes</button>
                <button type="button" class="btn btn-secondary" data-dismiss="modal" @onclick="() => Close()">Close</button>
            </div>
            <ValidationSummary />
        </EditForm>

@code {
public FormItem Item = new FormItem();

private IFileListEntry UploadedFile;

// So on change it gets in here and I can see that we have a item uploaded
private async Task LoadFile(IFileListEntry[] files)
{
    if (files.Count() != 0)
    {
        UploadedFile = files.FirstOrDefault();
    }

    this.StateHasChanged();
}

protected async Task SubmitForm(EditContext editContext)
{

}
}

该类Item有一个属性:

    [Required]
    public IFileListEntry File { get; set; }

我已经看到这可能是 BlazorInputFile 组件本身的问题,但我想知道是否有其他人遇到过这个问题?

当前使用 ASP.Net Core 3.1 运行 Blazor

4

2 回答 2

0

我认为问题来自项目版本,因为本文档说 blazorInputFile适用于版本 5,但您的是 3.1

在此处输入图像描述

于 2021-09-02T07:42:29.183 回答
0

所以。看起来这是在组件的上次更新中添加的错误。

为了解决这个问题,我将文件的 CSS 设置为白色,并在调用的 LoadFile 函数中的按钮下方添加了文件名。这是一种 hacky 方式,但在组件更新/修复之前,我看不到任何其他方式。

CSS:

input[type='file'] {
    color: transparent;
}

组件中的全局变量:

private string FileName = "";

LoadFile 函数的变化:

FileName = string.Concat("File: ",files.FirstOrDefault().Name);
于 2021-09-03T10:25:38.110 回答