1

在我的 MVC 应用程序中,我将以下代码用于文件。

模型

public HttpPostedFileBase File { get; set; }

看法

@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; }
    }
}

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

4

2 回答 2

0

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

如果您知道该文件是有效的,并且想要永久保留它,请保存它并将路径保留在内存中。

如果您知道该文件是无效的,您不会想要也经常无法保留它。

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

于 2012-11-30T13:09:21.480 回答
0

如果您想尽可能地使用户体验无缝,请尝试以下操作:

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