【问题标题】:How to persist IFormFile Upload when (ModelState.IsValid == false) on ASP.NET Core在 ASP.NET Core 上 (ModelState.IsValid == false) 时如何持久化 IFormFile 上传
【发布时间】:2019-04-20 17:31:01
【问题描述】:
当通过带有 Asp.Net Core MVC 模式的表单上传文件时,由于模型绑定,输入上的数据得以保留。但是,当我声明具有[NotMapped] 属性的IFormFile 类型的属性作为文件上传的数据传输对象时,数据被携带但不持久,因此,如果ModelState.IsValid 验证失败,我将需要加载文件和图像再次进入表单以便重新提交。
在返回 ASP.NET Core MVC 视图时,有什么方法可以持久保存(而不是存储)这些数据?
谢谢。
【问题讨论】:
标签:
asp.net-core
asp.net-core-mvc
【解决方案1】:
将 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");}
}