在asp.net mvc3 razor中设置模型的文件控制值

时间:2012-11-30 11:55:13

标签: asp.net-mvc asp.net-mvc-3 file-upload razor model

在我的MVC应用程序中,我使用以下代码作为文件。

MODEL

public HttpPostedFileBase File { get; set; }

查看

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

一切正常......提交价值但我试图从控制器模型加载文件无法正常工作

CONTROLLER

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

如果我的验证在返回后失败,我怎么能再次加载文件输入,我的文件控件没有映射到模型到文件而且它是空的......

2 个答案:

答案 0 :(得分:0)

如果您知道该文件有效,并希望暂时保留该文件,则可以将其保留在会话中(但请注意内存使用情况)。

如果您知道该文件有效,并希望永久保留该文件,请将其保存并将路径保留在内存中。

如果您知道该文件无效,您可能不想也不经常保留该文件。

在验证失败期间,这通常以与密码相同的方式处理 - 它需要再次提供,因此只有在其他一切都好的时候才会要求。

答案 1 :(得分:0)

如果您希望尽可能地无缝地获得用户体验,请尝试以下操作:

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