2 열이있는 CSV 파일을 업로드해야합니다. 1.Key 2.Value 및 변환 테이블의 DB에 저장해야하지만 오류가 발생합니다. "IndexOutOfRangeException : 인덱스 배열의 범위를 벗어난 것입니다." 내 코드는 다음과 같습니다. 여기 "IndexOutOfRangeException : 인덱스가 배열 경계를 벗어났습니다." SqlDb ASP.NET MVC 6
[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
보내기,,,
Verstuur
보내기하지만 난 그 기본 언어이며 만드는 그 메신저의 becaouse 때문에 영어를 필요가없는 키 이름 = 항목 [0], 값 = 항목 [3].안부
귀하의 CSV 쓰레기 인 반면에 시도 - 캐치를 넣어 있도록 CSV 파일은 빈 행이이었다. 정의 된 3 개의 열이 있지만 데이터에는 4 개의 열이 있습니다. 또한 CSV 파일을 처리하는 방법이 아닙니다. 단순히 ","로 나눌 수는 없습니다. 형식 작성 방법에 대한 CSV RFC https://tools.ietf.org/html/rfc4180을 읽어보십시오. – Tseng