2012-11-30 25 views
0

在我的MVC应用程序中,我使用下面的代码的文件。文件中设置控制值

模型

public HttpPostedFileBase File { get; set; } 

VIEW

@Html.TextBoxFor(m => m.File, new { type = "file" }) 

一切做工精细..提交的价值,但我试图加载从控制器模型,它是不工作

文件控制器

public ActionResult ManagePhotos(ManagePhoto model) 
{ 
    if(ModelState.IsValid) 
    { 
      //upload file 
    } 
    else 
    { 
      return View(model); //contains type HttpPostedFileBase File { get; set; } 
    } 
} 

我怎样才能重新加载文件的输入,如果我的验证为返回,我的文件控制没有映射到模型文件,它是空的失败后...

回答

0

如果知道该文件是有效的,想暂时保留它,你可以保持它在会话中(但要注意内存使用情况)。

如果知道该文件是有效的,并希望永远保存,保存它,只是不停的路径在内存中。

如果您知道该文件是无效的,你不会想也不经常能够保持它。

通常这是在验证失败作为密码时相同的方式处理 - 它需要再次提供,因此要求只有当其他一切都是好的。

+0

,因为我有其他的几个文件,我需要的所有文件保存在相同的提交做到这一点。所以我不能救前所有日期是有效的,我认为会是不是由我来存储文件的选项暂时 你对此有任何其他的想法..? – BrainCoder

+0

那么你必须将它们保存在服务器内存中,或者将它们保存在服务器文件存储中,或者要求客户端每次重新上传它们。您可以将它们保存在临时文件夹的文件系统中,然后在提交成功时从临时文件夹移动到永久存储器。 – Kaido

+0

为此我有一个问题,因为如果用户不执行'添加操作'以及用户从应用程序退出,它将开销删除临时文件夹,我有限的存储在服务器上。 – BrainCoder

0

,如果你想,因为它需要做用户体验的无缝作为多远,然后尝试以下操作:

  1. 添加JavaScript客户端上,以验证用户输入
  2. 在服务器端临时存储tmp文件存储中的所有文件。清理超过10分钟的文件。当您需要将文件保存到存储