在视图上:
<% =Html.BeginForm("About", "Home", FormMethod.Post, new {enctype="multipart/form-data "})%> <% Html.EndForm(); %>
在Controller中,有这样的东西:
[AcceptVerbs(HttpVerbs.Post)] public ActionResult About(HttpPostedFile postedFile) { //but postedFile is null View(); }
postedFile
在About()中为null.我如何上传文件?
使用HttpPostedFileBase(不是HttpPostedFile)并将参数命名为与表单完全相同.例如.如果你有
你必须有方法头:
public ActionResult About(HttpPostedFileBase file1)
这不能解释您的参数为空的原因,但您可以直接深入了解请求.尽管如此,这可能不是最"MVC"的方式.在你的方法体中试试这个:
var upload = Request.Files["postedFile"] if (upload.ContentLength > 0) { // Do whatever }
要更加"MVC",您可以将代码从控制器中提取到IModelBinder实现中,并使用自定义对象作为方法的参数.这篇Scott Hanselman博客文章展示了实现自定义ModelBinder的步骤.