2012-09-13 64 views
6

当我尝试将图像上传到我的MVC控制器操作并出现验证错误时,我必须单击每个按钮并再次找到所有文件。返回HttpPostedFileBase查看验证错误

如果我有一个由

<input type="file" id="file0" name="Files[0]" /> 
<input type="file" id="file1" name="Files[1]" /> 

和像

public ActionResult Create(ModelClass model, IEnumerable<HttpPostedFileBase> Files) 
{ 
    if(ModelState.IsValid) 
    { 
     //do work 
     if(PhotoValidation.IsValid(Files)) 
     { 
      //do work 
     } 
     else 
     { 
      ModelState.AddModelError("","Photos not valid"); 
     } 
    } 
    return view(model); // Way to return photos back to the view on modelstate error? 
} 

的文件被发送到服务器的罚款,但一个控制器动作视图,如果有一个模型验证错误,有没有任何方式返回模型和文件,以便用户不必再次上传它们?

回答

8

这是不可能的。解析HTML页面时绝不会使用intput type =“file”的值。这是一个巨大的安全风险,所以现代浏览器不会让他们“保留”价值。

如果你确信你的客户正在使用的浏览器支持HTML5,你可以尝试使用JavaScript文件API,以消除回传 - 检查下面的文章:

+0

谢谢你的回应。这是我的怀疑,但我只是想确定。你提供的文章是有帮助的。再次感谢你。 – kevskree