您的问题是您的表单创建了一个带有模型绑定器可以绑定的信息的发布请求,因为命名约定不正确。
你看,你有 4 个文件字段,每个字段都有不同的名称,为了让模型绑定器正确绑定它们,你的控制器操作签名应该如下所示:
public ActionResult Create(HttpPostedFileBase mgmFile,
HttpPostedFileBase logoFile,
HttpPostedFileBase fohFile ,
HttpPostedFileBase bohFile)
遵循 MCV 设计模式 最好的选择是使用包含IEnumerable<HttpPostedFileBase>
您将为IEnumerable<HttpPostedFileBase>
这样你就可以像这样使用它:
Html.EditorFor(m=>Model.filesUploaded)
你的控制器操作将如下所示:
public ActionResult Create(MyViewModel i_InputModel)
{
i_InputModel.filesUploade; //Use the files here to upload them.
}
其他选项有:在文件输入字段上使用 HTML5 multiple 属性,如下所示:
<label for="mgmFile" class="col-sm-2 control-label">Files:</label>
<div class="col-sm-6">
<input type="file" multiple="multiple" name="files" id="files" />
</div>
和这样的控制器操作:
public ActionResult Create(HttpPostedFileBase files)
或使用多个文件字段但以名称索引它们:
<input type="file" multiple="multiple" name="files[0]" id="files_1" />
<input type="file" multiple="multiple" name="files[1]" id="files_2" />
<input type="file" multiple="multiple" name="files[2]" id="files_3" />
<input type="file" multiple="multiple" name="files[3]" id="files_4" />
然后你可以使用像这样的控制器操作:
public ActionResult Create(IEnumerable<HttpPostedFileBase> files)