Model view controller MVC:使用HttpPostedFileBase返回NULL

Model view controller MVC:使用HttpPostedFileBase返回NULL,model-view-controller,httppostedfilebase,Model View Controller,Httppostedfilebase,我试图包括文件上传,但它始终保持空。这是我的模型: [Display(Name = "Upload Document")] [DataType(DataType.Upload), FileSize(102400)] public HttpPostedFileBase PathwaysToImpactUploadDocument { get; set; } 我的看法是: ProjectForm.cshtml @Html.EditorFor(m => m.Pathw

我试图包括文件上传,但它始终保持空。这是我的模型:

   [Display(Name = "Upload Document")]
    [DataType(DataType.Upload), FileSize(102400)]
    public HttpPostedFileBase PathwaysToImpactUploadDocument { get; set; }
我的看法是: ProjectForm.cshtml

  @Html.EditorFor(m => m.PathwaysToImpactUploadDocument)
Upload.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始终为空。我遗漏了什么?

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

  • 您的视图中似乎没有表单标签或提交按钮(可能有问题,也可能没有问题)
  • 视图的模型不是动作方法的模型
  • 我会确保您的观点如下所示:

    @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>
    }
    
    @model ProjectCreateViewModel
    @使用(Html.BeginForm(null,null,FormMethod.Post,new{enctype=“multipart/formdata”}))
    {
    @TextBoxFor(m=>m.file,新的{@class=“form control”,type=“file”})
    @Html.ValidationMessageFor(m=>m.file)
    上传
    }
    
    如何上传文件-标准提交(表单中是否包含
    enctype
    属性)或ajax?我需要添加enctype,您是正确的。:)我仔细检查并发现视图是问题所在,它没有声明enctype=“multipart/form data”。非常感谢。我现在可以继续讨论保存和下载文件的逻辑。