【问题标题】:MVC: using HttpPostedFileBase returns NULLMVC:使用 HttpPostedFileBase 返回 NULL
【发布时间】:2015-10-09 11:31:09
【问题描述】:

我正在尝试包含文件上传,它始终保持为 NULL。这是我的模型:

   [Display(Name = "Upload Document")]
    [DataType(DataType.Upload), FileSize(102400)]
    public HttpPostedFileBase PathwaysToImpactUploadDocument { get; set; }

我的观点: ProjectForm.cshtml

  @Html.EditorFor(m => m.PathwaysToImpactUploadDocument)

上传.cshtml

@model HttpPostedFileBase

@{
    Layout = "~/Views/Shared/EditorTemplates/_Layout.cshtml";
}
@Html.TextBox("", null, new {@class = "form-control", type = "file"})
@Html.ValidationMessage("")

控制器:

        [HttpPost]
        public ActionResult New(ProjectCreateViewModel model){
}

model.PathwaysToImpactUploadDocument 始终为 NULL。我错过了什么?

【问题讨论】:

  • 您如何上传文件 - 标准提交(您是否在表单中包含 enctype 属性)或 ajax?
  • 我需要添加enctype,你是对的。 :)

标签: model-view-controller httppostedfilebase


【解决方案1】:

这里有几件事似乎值得怀疑:

  1. 您的视图中似乎没有表单标签或提交按钮(可能有问题也可能没有问题)
  2. 您的视图模型不是您的操作方法的模型

我会确保您的视图看起来像:

@model ProjectCreateViewModel
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" })) 
{
    @Html.TextBoxFor(m => m.file, new {@class = "form-control", type = "file"})
    @Html.ValidationMessageFor(m => m.file)
    <input type="submit">Upload</input>
}

【讨论】:

  • 我仔细检查并发现视图是问题所在,它没有声明 enctype = "multipart/form-data"。谢谢!我现在可以继续保存和下载文件的逻辑了。
猜你喜欢
  • 2019-09-17
  • 2014-06-29
  • 2016-04-08
  • 2012-01-23
  • 1970-01-01
  • 2017-09-24
  • 2020-03-04
  • 1970-01-01
  • 2020-01-14
相关资源
最近更新 更多