如何在ASP.NET Core上(ModelState.IsValid == false)时保持IFormFile上传

时间:2019-04-20 17:31:02

标签: asp.net-core asp.net-core-mvc

通过带有Asp.Net Core MVC模式的表单上载文件时,由于模型绑定,输入中的数据得以保留。但是,当我声明具有IFormFile属性的[NotMapped]类型的属性以用作文件上传的数据传输对象时,数据会被携带但不会持久保存,因此,如果ModelState.IsValid验证失败,我将需要再次将文件和图像加载到表单中,以便重新提交。

返回ASP.NET Core MVC视图时,是否有任何方法可以保留(而不存储)此数据?

谢谢。

1 个答案:

答案 0 :(得分:0)

将ViewModel从服务器返回到客户端后,无法重新选择文件。

要解决此问题,您可以考虑在客户端检查模型,例如:

<div class="row">
    <div class="col-md-4">
        <form asp-action="Create" enctype="multipart/form-data">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Name" class="control-label"></label>
                <input asp-for="Name" class="form-control" />
                <span asp-validation-for="Name" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="File" class="control-label"></label>
                <input asp-for="File" type="file"  class="form-control" />
                <span asp-validation-for="File" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}