我是MVC的新手,我遇到了一个我似乎无法解决的问题。我已经看到过几篇关于类似问题的文章,但没有什么能够让我满足我需要实现的法案。在MVC中处理多个多文件输入
我有一个MVC4项目,我需要在一个页面上有多个多文件输入,我需要能够区分通过哪个输入提交哪些文件。
我见过this SO文章建议有多个Post动作参数,但我的代码似乎将它们全部作为单个列表处理。
这里是我的控制器代码:
public ActionResult ProjectDocuments(C4Tbl_UploadedFiles c4tbl_uploadedfiles, IEnumerable<HttpPostedFileBase> File1, IEnumerable<HttpPostedFileBase> File2)
{
try
{
foreach (var file in File1)
{
if (file.ContentLength > 0)
{
//Handle the first file list
}
}
foreach (var file in File2)
{
if (file.ContentLength > 0)
{
//Handle the second file list
}
}
这里是我查看代码:
<table border="0" id="cssTable" class="nobg">
<tr>
<th style="width: 100px; min-width: 100px; max-width: 100px">
<b>Type</b>
</th>
<th style="width: 400px; min-width: 400px; max-width: 400px">
<b>File to Upload</b>
</th>
<th style="width: 500px; min-width: 500px; max-width: 500px">
<b>Status</b>
</th>
</tr>
<tr>
<td style="width: 100px; min-width: 100px; max-width: 100px">
<b>Blueprint(s)</b>
</td>
<td style="width: 400px; min-width: 400px; max-width: 400px">
<input type="file" name="File1" id="BP" multiple style="width: 380px"/>
</td>
<td style="width: 500px; min-width: 500px; max-width: 500px; text-align: left">
@Html.RadioButton("Submitted", "Yes", false, new { @style = "width: 25px;", groupname="group1" }) Uploaded
@Html.RadioButton("Submitted", "No", false, new { @style = "width: 25px;", groupname="group1" }) Not Uploaded
@Html.RadioButton("Submitted", "N/A", false, new { @style = "width: 25px;", groupname="group1" }) Not Applicable
</td>
</tr>
<tr>
<td style="width: 100px; min-width: 100px; max-width: 100px">
<b>Recovery Guide(s)</b>
</td>
<td style="width: 400px; min-width: 400px; max-width: 400px">
<input type="file" name="File2" id="RG" multiple style="width: 380px"/>
</td>
<td style="width: 500px; min-width: 500px; max-width: 500px; text-align: left">
@Html.RadioButton("Submitted", "Yes", false, new { @style = "width: 25px;", groupname="group2" }) Uploaded
@Html.RadioButton("Submitted", "No", false, new { @style = "width: 25px;", groupname="group2" }) Not Uploaded
@Html.RadioButton("Submitted", "N/A", false, new { @style = "width: 25px;", groupname="group2" }) Not Applicable
</td>
<td>
<input type="submit" value="Submit" name="submit" />
</td>
</tr>
</table>
我需要能够接受任何或所有输入端已经提供的文件,我需要要知道我的哪些输入是通过文件提交的,所以我知道它们是哪种类型的文件,所以我可以在我的表中创建相关的数据库条目。
任何人都可以看到一个简单的解决方案,并指出我在正确的方向吗?
的名字你控件是'File1'和'File2',所以你的参数需要'IEnumerable Fi le1,IEnumerable File'(注意 - 你第二组单选按钮将被忽略,因为你给它们的名字与第一组名相同) –
谢谢Stephen,我改变了一些帖子的代码读得不好。我已经编辑了这个现在正确读取。 – Nevski
在你的编辑中该方法的签名现在是正确的,你可以遍历File1和File2中的文件foreach(File1中的var文件){...' –