";IndexOutOfRangeException:索引超出了数组的界限";在SqlDb ASP.NE
本文关键字:quot 界限 ASP NE SqlDb IndexOutOfRangeException 索引 数组 | 更新日期: 2023-09-27 18:09:40
我需要上传有2列的CSV文件1.Key 2.Value和I需要将它们保存在Translation表的DB中,但我收到错误"IndexOutOfRangeException:Index超出了数组的界限。"这是我的密码。
[HttpPost("application/UploadCSV/{id}")]
public async Task<ActionResult> UploadCSV(UploadCSVModelView uploadFileMV, int Id)
{
var csvReader = new StreamReader(uploadFileMV.UploadedFile.OpenReadStream());
var values = new List<string>();
var appId = _applicationlanguageService.GetAll().Where(x => x.ApplicationId == Id).Select(x => x.Id).FirstOrDefault();
List<Translation> listTrans = new List<Translation>();
while (!csvReader.EndOfStream)
{
string abc = csvReader.ReadLine();
var item = abc.Split(',');
listTrans.Add(new Translation(){ KeyName= item[0], Value = item[3], State = (int)EnumState.Created, ApplicationLanguageId = appId, CreatedBy = User.Identity.Name, CreatedOn = DateTime.UtcNow});
}
if (ModelState.IsValid)
{
await _translationService.CreateAsync(listTrans);
}
return RedirectToAction("Index");
}
这是我的翻译模型
public class Translation : BaseEntity
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string KeyName { get; set; }
public string Value { get; set; }
public int State { get; set; }
[ForeignKey("ApplicationLanguageId")]
public int ApplicationLanguageId { get; set; }
public virtual ApplicationLanguage ApplicationLanguage { get; set; }
}
查看
<div class="row">
<div class="col-md-8">
<section>
<form asp-controller="Application" asp-action="UploadCSV" data-method="post" class="form-horizontal" enctype="multipart/form-data" onsubmit="return beforeSubmit();">
<div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Version" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Version" class="form-control" required />
<span asp-validation-for="Version" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">Media Type</label>
<div class="col-md-10">
<select asp-for="LanguageId" asp-items="Model.LanguagesList" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">File</label>
<div class="col-md-10">
<input asp-for="UploadedFile" id="fileMedia" type="file" max-size=1048576>
<span id="val-fileMedia" class="text-danger field-validation-valid" style="display:block;color: #C23434;"></span>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<button type="submit" class="btn btn-default">Create</button>
</div>
</div>
</form>
</section>
<div>
<a asp-controller="Application" asp-action="Index">Back to list</a>
</div>
</div>
</div>
钥匙,英语,荷兰
保存,保存,Bewaar
发送,发送,对比
但我不需要英语,因为他是默认语言,因此我制作KeyName=item[0],Value=item[3]。
向致以最诚挚的问候
while (!csvReader.EndOfStream)
{
try
{
string abc = csvReader.ReadLine();
var item = abc.Split(',');
if (item != null)
{
listTrans.Add(new Translation()
{
KeyName = item[0],
Value = item[3],
State = (int)EnumState.Created,
ApplicationLanguageId = appId,
CreatedBy = User.Identity.Name,
CreatedOn = DateTime.UtcNow
});
}
}
catch (Exception ex)
{
}
}
它现在工作了,问题是CSV文件有空行,所以我在While 中放入try-catch