【问题标题】:How to POST file upload after returning to view from controller从控制器返回视图后如何POST文件上传
【发布时间】:2014-09-08 15:42:05
【问题描述】:

我可以成功上传文件(路径存储在数据库中,文件移动到文件存储位置)。但是,如果视图中另一个字段的验证失败并且用户返回到视图页面,则文件输入显示“未选择文件”。

debug中,当控制器返回视图时,this.Model.CoverLetter为“System.Web.HttpPostedFileWrapper”。

如何保留此文件以便可以通过 POST 重新提交?我是否需要在控制器中执行某些操作才能将文件信息传递回视图以重新提交?

查看:

<label for="CoverLetter">Cover Letter</label>
<input type="file" name="CoverLetter" id="CoverLetter" accept=".pdf,.doc,.docx,.txt" />
@Html.ValidationMessage("CoverLetter")

控制器:

[HttpPost]
public ActionResult Create(Applicant application, HttpPostedFileBase CoverLetter)
{
     this.ModelState.AddModelErrors(application.Validate(update: false));

     if (this.ModelState.IsValid && application.Create())
     {
          //this stuff works
     }
     return View(application);
}

【问题讨论】:

  • 做客户端验证,是否包含jquery uobtrusive validate?

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


【解决方案1】:

出于安全原因,您不能以编程方式设置输入类型文件的值。根本不允许。

您可以做的最好的事情是尽可能在客户端进行验证,并对需要在服务器端验证的内容进行 ajax 验证。

【讨论】:

    猜你喜欢
    • 2017-02-13
    • 2017-05-26
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2013-01-08
    • 2019-03-03
    相关资源
    最近更新 更多