【发布时间】:2018-06-27 13:41:56
【问题描述】:
在 ASP .net 核心 MVC 网站上工作,当我尝试上传具有多个输入的文件时,Iformfile 始终为空:
Form:
<form asp-controller="EmployeeManagement" asp-action="ConfirmObjectSubmit" enctype="multipart/form-data">
@foreach (Intranet.Models.Object obj in Model.Objects)
{
<h4>@Localizer["Picture"]</h4>
var fileID = "Model_LendingSheets_" + obj.ObjectType.ObjectTypeID + "_";
var fileName = "Model.LendingSheets[" + obj.ObjectType.ObjectTypeID + "]";
<div class="form-group">
<div class="input-group input-file" name="file">
<label class="input-group-btn">
<span class="btn btn-primary">@Localizer["Browse"]…
<input type="file" style="display: none;" id="@fileID" name="@fileName">
</span>
</label>
<input type="text" class="form-control" placeholder='@Localizer["Choose a file..."]' id="fileName" readonly />
<span class="input-group-btn">
<button id="removeFile" class="btn btn-warning btn-reset" type="button">@Localizer["Remove"]</button>
</span>
</div>
</div>
}
<button id="submit" type="submit" class="input-group btn btn-default">@Localizer["Validate Form"]</button>
</form>
型号:
public class ConfirmObject
{
public List<Models.Object> Objects { get; set; }
public Dictionary<int, bool> Need { get; set; }
public Dictionary<int, String> Details { get; set; }
public Dictionary<int, DateTime> LendingDates { get; set; }
public Dictionary<int, IFormFile> LendingSheets { get; set; }
}
控制器
public IActionResult ConfirmObjectSubmit(ConfirmObject model)
{
return RedirectToAction("Index", "Home");
}
我试过了:
<div class="form-group">
<div class="input-group input-file" name="file">
<label class="input-group-btn">
<span class="btn btn-primary">
@Localizer["Browse"]…
<input type="file" style="display: none;" asp-for="LendingSheets[obj.ObjectType.ObjectTypeID]">
</span>
</label>
<input type="text" class="form-control" placeholder='@Localizer["Choose a file..."]' id="fileName" readonly />
<span class="input-group-btn">
<button id="removeFile" class="btn btn-warning btn-reset" type="button">@Localizer["Remove"]</button>
</span>
</div>
</div>
还有:
var fileID = "LendingSheets_" + obj.ObjectType.ObjectTypeID + "_";
var fileName = "LendingSheets[" + obj.ObjectType.ObjectTypeID + "]";
<div class="form-group">
<div class="input-group input-file" name="file">
<label class="input-group-btn">
<span class="btn btn-primary">@Localizer["Browse"]…
<input type="file" style="display: none;" id="@fileID" name="@fileName">
</span>
</label>
<input type="text" class="form-control" placeholder='@Localizer["Choose a file..."]' id="fileName" readonly />
<span class="input-group-btn">
<button id="removeFile" class="btn btn-warning btn-reset" type="button">@Localizer["Remove"]</button>
</span>
</div>
</div>
但它并没有更好地工作,model.LendingSheets 保持为空。
ps:我需要多个输入,而不是一个输入多个文件。
编辑:
这项工作:
<input type="file" class="lending-sheets" asp-for='LendingSheets[22]'>
<input type="file" class="lending-sheets" asp-for='LendingSheets[39]'>
但我没有成功在以 obj.ObjectType.ObjectTypeID 为键的 foreach 中成功
【问题讨论】:
标签: c# asp.net-mvc file-upload asp.net-core asp.net-core-mvc