在ASP.NET MVC Core中回发viewmodel时,是否有可能以某种方式不清除文件输入?我知道IFormFile不包含指定所选文件目录的成员。
因此,如果视图模型在ModelState无效的情况下被发回,则清除文件输入。如果不完全依靠客户端验证,是否可以避免这种情况?
这是一个示例控制器和模板,可以更充分地解释我在说什么
控制器:
namespace Example
{
public class CreateVm
{
public IFormFile aFile{ get; set; }
public string someText{get; set;}
}
public class ExampleController : Controller
{
public IActionResult Action()
{
var vm = new CreateVm();
return View(vm);
}
[HttpPost]
public IActionResult Create(CreateVm vm)
{
// Something invalidates the model state
// The supplied viewmodel isn't valid, send it back
if (!ModelState.IsValid)
return View(vm);
// Do stuff here
return RedirectToAction(nameof(Create));
}
}
}
模板:
@model Example.CreateVm
<form asp-action="Create" method="post" enctype="multipart/form-data">
<input asp-for="someText"/>
<input asp-for="aFile"/>
<input type="submit" value="Submit">
</form>
根据我的理解,不可能在javascript中获取文件目录,所以我认为这也不是一种可行的方法。