Asp.net mvc 使用ASP.MVC 5上载的文件列表为空

Asp.net mvc 使用ASP.MVC 5上载的文件列表为空,asp.net-mvc,razor,multiple-file-upload,Asp.net Mvc,Razor,Multiple File Upload,我有一个网络表单,我想选择一个文件列表,输入一些附加信息,然后提交整个包。控制器应根据额外输入的数据处理文件列表。因此,我想将所有产品捆绑在一个模型中: 公共类MyModel { 公共字符串附加信息{get;set;} public int AdditionalInformationsId{get;set;} 公共IEnumerable文件{get;set;} } 公共类MyController:Controller { [HttpPost] 公共操作结果上载文件(MyModel) { 交换机(

我有一个网络表单,我想选择一个文件列表,输入一些附加信息,然后提交整个包。控制器应根据额外输入的数据处理文件列表。因此,我想将所有产品捆绑在一个模型中:

公共类MyModel
{
公共字符串附加信息{get;set;}
public int AdditionalInformationsId{get;set;}
公共IEnumerable文件{get;set;}
}
公共类MyController:Controller
{
[HttpPost]
公共操作结果上载文件(MyModel)
{
交换机(型号附加信息SID)
{
案例1:
//对Model.Files执行一些操作
案例2:
//对Model.Files执行其他操作
...
}
重定向操作(“索引”);
}
}
我的看法是

@model MyProgram.Models.MyModel
@using MyProgram.Models

@using (Html.BeginForm("UploadFile", "MyController", FormMethod.Post,
                                                  new { enctype = "multipart/form-data" }))
{        
    <div class="row">
        <div class="col-sm-6">                
            <input type="file" name="Files" multiple />
        </div>
        <div class="col-sm-6"></div>
    </div>
    <div class="row">
        <div class="col-sm-3">                
            @Html.DropDownListFor(model => model.AdditionalInformationsId, 
                                             ((MyDropDownList)Session["DDLists"]).companies, 
                                             Model.AdditionalInformation, 
                                             new { @class = "form-control", id = "ReceivingCompany" })
        </div>
        <div class="col-sm-3">
            <br />
            <button class="btn btn-default" type="submit">Upload</button>
        </div>
        <div class="col-sm-6"></div>
    </div>
}
@model MyProgram.Models.MyModel
@使用MyProgram.Models
@使用(Html.BeginForm(“UploadFile”、“MyController”、FormMethod.Post、,
新的{enctype=“multipart/form data”})
{        
@Html.DropDownListFor(model=>model.AdditionalInformationsId,
((MyDropDownList)会话[“DDLists]”)。公司,
模型。其他信息,
新的{@class=“表单控制”,id=“接收公司”})

上传 }

如果我现在使用submit按钮,模型将被发送到控制器。例如,
附加信息SID
具有表单中输入的值。但是
IEnumerable Files
总是空的,除非我提交表单时没有选择任何要上传的文件,在这种情况下,列表包含一个
null
-对象。此外,将属性
id=“Files”
添加到多文件输入标记也不起作用


我找不到错误。是否需要在web.config中设置属性?

将属性类型更改为IEnumerable of
HttpPostedFileBase

public IEnumerable<HttpPostedFileBase> Files { get; set; }
public IEnumerable文件{get;set;}

现在,已发布的文件将映射到HttpPost操作中的files属性。

将属性类型更改为IEnumerable of
HttpPostedFileBase

public IEnumerable<HttpPostedFileBase> Files { get; set; }
public IEnumerable文件{get;set;}

现在,发布的文件将映射到您的HttpPost操作中的files属性。

非常感谢,现在它可以工作了!我很好奇,你知道为什么使用
公共IEnumerable文件{get;set;}
它不工作吗?非常感谢,现在它工作了!我很好奇,你知道为什么使用
公共IEnumerable文件{get;set;}
它不起作用吗?