Asp.net mvc ASP.NET MVC请求。文件不存在Model.IsValid=false

Asp.net mvc ASP.NET MVC请求。文件不存在Model.IsValid=false,asp.net-mvc,file-io,Asp.net Mvc,File Io,我有一个后控制器动作,如: if (ModelState.IsValid) { try { //.. save and redirect code here } catch { //.. add errors to model state } } return View(myModel); My request.fil

我有一个后控制器动作,如:

    if (ModelState.IsValid)
    {
        try
        {
            //.. save and redirect code here
        }
        catch
        {
            //.. add errors to model state
        }
    }

    return View(myModel);
My request.files可以包含来自以下标记的2个图像:

<input id="MyImage" name="MyImage" type="file" />

当模型有效,保存完成,然后我重新定向时,这种方法可以正常工作


但是,当模型无效并且我将对象返回到视图时,问题就出现了。请求不再包含request.files中的文件。是否有方法将它们传递到要存储在输入标记中的视图?

出于安全原因,您可以设置输入type=“file”标记的值。想象一下,访问一个恶意站点,该站点可能会设置值并发布一个带有javascript的表单,窃取您计算机上的任何文件。

尝试先将文件保存到临时区域,然后调用Model.IsValid。变得有点复杂,但有必要考虑到您想要上传文件(可能带有已验证的记录)的愿望,在某个地方标记您已经上传了文件,在hiddenfield或其他地方,并在Model.Isvalid返回true时使用它,以便您可以将文件与新的有效记录打包在一起