我有一个列表,其中我使用AJAX for each 记录上传一个文件,但是因为我在一个循环中,并且我使用ID作为输入,所以只有第一个记录文件被上传,其余的记录不被上传.
我有一个列表,其中我使用AJAX for each 记录上传一个文件,但是因为我在一个循环中,并且我使用ID作为输入,所以只有第一个记录文件被上传,其余的记录不被上传.
public class TaxParvande
{
public int id { get; set; }
public int projectId { get; set; }
public String projectName { get; set; }
public int listId { get; set; }
public int year { get; set; }
public bool state { get; set; }
[NotMapped]
public IFormFile? prosessMastand { get; set; }
public int prosessId { get; set; }
public String prosessName { get; set; }
public String FilePath { get; set; }
public String NaoaParvane { get; set; }
}
<form asp-controller="Tax" asp-action="SabtEditTaxParvanedAsync" method="post" enctype="multipart/form-data">
<div class="container-fluid" style="overflow: auto; overflow-x: hidden; direction:ltr ">
<table class="table table-bordered table-striped table-hover display" width="100%" style="direction:rtl;font-size:12px">
<thead>
<tr class="table-head-blue text-center" style="background-color: #416992; color: white; position: sticky; top: 0;">
<th style="width:150px">وضعیت</th>
<th>پروسه پرونده</th>
<th>مستندات</th>
<th>تاریخ</th>
</tr>
</thead>
@{ var count = 0;}
@for (var i = 0; i < Model.Count(); i++)
{
<tr>
<td style="width:150px">
<label class="switch">
<input type="checkbox" onchange="DisableRow(this)" asp-for="@Model.ToList()[i].state" value="True">
<span class="slider round"></span>
</label>
</td>
<td style="font-size: 12px">
<span>@Model.ToList()[i].prosessName</span>
<input class="d-none" value="@Model.ToList()[i].prosessName" name="[@i].prosessName" />
</td>
<td>
<div class="d-flex justify-content-around">
<div>
<span class="text-center mt-2" id="spnImageCartMlie" style="color: black;font-size: 12px"></span>
</div>
<div>
<input type="button" required onclick="UploadImage()" value="Upload" class="btn btn-outline-danger " id="btnUpLoad" />
<div id="divmessage" class="text-center hidden m-2"></div>
</div>
<input id="mostanadPath" name="[@i].prosessMastand" type="file" class="">
</div>
</td>
<td style="font-size: 12px" hidden>
<span>@Model.ToList()[i].prosessId</span>
<input class="d-none" value="@Model.ToList()[i].prosessId" name="[@i].prosessId" />
</td>
<td>
</td>
</tr>
count++;
}
</table>
</div>
<div class=" text-center">
<button class="btn btn-success col-4 mb-2 " type="submit">ثبت اطلاعات</button>
</div>
</form>
//--------------------------------------------------------------------------
[HttpPost]
public async Task<IActionResult> SabtEditTaxParvanedAsync([FromForm]IEnumerable<TaxParvande> taxParvandes)
{
if (taxParvandes == null)
{
return Content("File not selected");
}
foreach (var item in taxParvandes)
{
var path = Path.Combine(_webHostEnvironment.WebRootPath, "ListUpload", item.prosessMastand.FileName);
using (FileStream stream = new FileStream(path, FileMode.Create))
{
await item.prosessMastand.CopyToAsync(stream);
stream.Close();
}
var taxparvand = new TaxParvande
{
prosessId =item.prosessId,
prosessName = item.prosessName,
state = item.state,
FilePath = path,
};
_context.Add(taxparvand);
await _context.SaveChangesAsync();
}
return View();
}