Работая на веб-сайте MVC ASP .net, когда я пытаюсь загрузить файлы с несколькими входами, Iformfile всегда имеет значение null:
Форма:
<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>
Но это не работает лучше, модель.
PS: мне нужно иметь несколько входов, а не один вход с несколькими файлами.
РЕДАКТИРОВАТЬ:
Работа:
<input type="file" class="lending-sheets" asp-for='LendingSheets[22]'>
<input type="file" class="lending-sheets" asp-for='LendingSheets[39]'>
Но мне не удалось сделать это в foreach с obj.ObjectType.ObjectTypeID в качестве ключа