asp.net-core - 在 ASP.NET Core 上 (ModelState.IsValid == false) 时如何持久化 IFormFile 上传
问题描述
当通过带有 Asp.Net Core MVC 模式的表单上传文件时,由于模型绑定,输入上的数据得以保留。但是,当我声明一个具有属性的类型IFormFile
的[NotMapped]
属性作为文件上传的数据传输对象时,数据会被携带但不会被持久化,因此,如果ModelState.IsValid
验证失败,我需要将文件和图像再次加载到表单中重新提交。
返回 ASP.NET Core MVC 视图时,有什么方法可以保留(而不是存储)这些数据?
谢谢。
解决方案
将 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");}
}
推荐阅读
- javascript - 为什么 mouseEvent.offset 在同一位置单击时不同
- html - 溢出 -x hidden 在移动设备上不起作用
- java - 如何修复 Spring Tool Suit 4 中的 Port 8080 错误?
- arrays - 快速访问 JSON 响应数组中的数组?
- c++ - 如何修复“没有这样的文件或目录”库错误?我正在使用 Mingw-w64 编译器和 Netbeans IDE
- django - 在 Django 中创建了自定义权限并为组和用户分配了权限,但 @permission_required 失败
- typescript - Nuxt.js组件中如何使用Vuex获取API?
- python - 我的碰撞函数中的for循环永远不会命中?
- javascript - React js组件在滚动事件中重新渲染两次
- windows - Nagios 插件 check_logfiles 用户和实施者在 windows 上的使用情况