我有一個串列,我在其中為每條記錄上傳一個檔案,并將它們一起發送到控制器。代碼可以正常作業,但是如果我沒有為其中一個上傳檔案并且發送了空記錄,則會發生錯誤。
[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(_environment.WebRootPath, "ListUpload", item.prosessMastand.FileName);
using (FileStream stream = new FileStream(path, FileMode.Create))
{
await item.prosessMastand.CopyToAsync(stream);
stream.Close();
}
var taxDomainModel = new TaxDomainModel
{
prosessId =item.prosessId,
prosessName = item.prosessName,
state = item.state,
FilePath = path,
};
_context.Add(taxDomainModel);
await _context.SaveChangesAsync();
}
return View();
}
uj5u.com熱心網友回復:
但是,如果我不為其中一個上傳檔案并發送空記錄,則會發生錯誤。
那么,在這種情況下,您可能會遇到null reference exception. 要克服此錯誤,您可以將item.prosessMastand == nullthen 設定為continue回圈,這將跳過錯誤empty insertion。
public async Task<IActionResult> SabtEditTaxParvanedAsync([FromForm] IEnumerable<TaxParvande> taxParvandes)
{
if (taxParvandes == null)
{
return Content("File not selected");
}
foreach (var item in taxParvandes)
{
if (item.prosessMastand == null)
{
continue;
}
var path = Path.Combine(_environment.WebRootPath, "ListUpload", item.prosessMastand.FileName);
using (FileStream stream = new FileStream(path, FileMode.Create))
{
await item.prosessMastand.CopyToAsync(stream);
stream.Close();
}
var taxDomainModel = new TaxDomainModel
{
prosessName = item.prosessName,
state = item.state,
filePath = path,
};
_context.Add(taxDomainModel);
await _context.SaveChangesAsync();
}
return RedirectToAction("Index");
}
輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/527953.html
