C# 使用部分视图MVC 5上传文件

C# 使用部分视图MVC 5上传文件,c#,asp.net-mvc,razor,asp.net-mvc-5,C#,Asp.net Mvc,Razor,Asp.net Mvc 5,我正试图通过MVC5应用程序中的Html助手表单上传一个数字和一个文件。提交模型后,视图模型中的mymodel.File属性似乎总是返回null 添加model.File!=null检查,我的应用程序抛出了一个null引用异常 我的表单逻辑包含在名为UploadFile.cshtml的部分视图中,因为我的表单逻辑需要与index.cshtml不同的模型 如何从我的[HttpPost]控制器操作中的表单中读取文件属性 index.cshtml @Html.Action("UploadFile",

我正试图通过MVC5应用程序中的Html助手表单上传一个数字和一个文件。提交模型后,视图模型中的my
model.File
属性似乎总是返回
null

添加
model.File!=null
检查,我的应用程序抛出了一个
null引用异常

我的表单逻辑包含在名为
UploadFile.cshtml
的部分视图中,因为我的表单逻辑需要与
index.cshtml
不同的模型

如何从我的
[HttpPost]
控制器操作中的表单中读取
文件
属性

index.cshtml

@Html.Action("UploadFile", "Home")
UploadFile.cshtml

@model FileViewModel

@using (Html.BeginForm("FormUpload", "Home", FormMethod.Post))
{
    <div class="form-group">
        @Html.TextBoxFor(m => m.Marker)
    </div>
    <div class="form-group">
        @Html.TextBoxFor(m => m.File, new { type = "file" })
    </div>
    <input type="submit" name="submit" value="Submit" />
}
文件视图模型

public class FileViewModel
{
    public int ID { get; set; }
    public int Marker { get; set; }
    public string Filename { get; set; }
    public HttpPostedFileBase File { get; set; }
}

表单缺少enctype属性,需要为文件大小写指定该属性:

@using (Html.BeginForm("FormUpload", "Home", 
                       FormMethod.Post, 
                       new { enctype = "multipart/form-data" }))
有关更多详细信息,请参阅

Html.BeginForm("FormUpload", "Home", FormMethod.Post))
应该是

@using (Html.BeginForm("FormUpload", "Home", FormMethod.Post, new {enctype = "multipart/form-data"})) 

哦,哇,错过一件多么简单的事啊。谢谢你的快速回复!我会将它标记为答案,如果允许的话。是的,初学者大多会错过这一点,他们无法理解为什么文件会为空:)
@using (Html.BeginForm("FormUpload", "Home", FormMethod.Post, new {enctype = "multipart/form-data"}))