ASP.NET MVC Request.Files没有幸存的Model.IsValid = false

时间:2009-09-05 15:08:11

标签: asp.net-mvc file-io

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

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

    return View(myModel);

我的request.files可以包含来自以下标签的2张图片:

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

当模型有效时,保存完成,然后我重新指示。

然而,当模型无效并且我将对象返回到视图时,我的问题就出现了。该请求不再具有Request.Files中的文件。有没有办法将它们传递给视图以存储在输入标签中?

2 个答案:

答案 0 :(得分:1)

出于安全原因,您cannot设置输入类型=“文件”标记的值。想象一下,访问一个可以设置价值的恶意网站,并使用javascript窃取您计算机上的任何文件来发布表单。

答案 1 :(得分:0)

尝试首先将文件保存到临时区域,然后调用Model.IsValid。变得有点复杂,但是你需要上传一个文件(可能带有经过验证的记录)。你可以在某个地方标记你已经上传过一个文件,在一个隐藏字段或其他东西,并在Model.Isvalid返回true时使用它您可以将文件与新的有效记录一起打包。