텍스트 영역 (사용자가 여기에 모든 주문을 입력)과 제출 버튼이있는보기가 있습니다.
제출 버튼을 누르면 액션 메소드가 모든 주문을 처리하고 데이터베이스에 저장합니다.
모든 주문이 성공적으로 처리되면 자바 스크립트에서 달콤한 알림을 표시하는 표시기 (ViewBag)가있는보기로 돌아갑니다.
하나 이상의 주문이 실패하면 csv 파일을 다운로드하여 실패한 주문을 표시합니다.
또한 달콤한 경고 오류 메시지를 표시 할 수 있도록보기로 돌아가고 싶습니다.
파일을 다운로드하는 방법을 알고 있으며 달콤한 경고와 함께 오류 메시지를 반환하는 방법을 알고 있습니다.
나는 동시에 두 가지를 수행하는 방법을 모르겠습니다. :)
2 개의 요청을 동시에 보낼 수 없다는 것을 알고 있습니다. 어떤 옵션이 있습니까?
제출 버튼 컨트롤러의 작업 :
public IActionResult AddOrdersExtension(OrderVM orderVM)
{
if (ModelState.IsValid)
{
//
foreach(var order in ordersList)
{
if(isStoreAuthenticated(orderVM))
_unitOfWork.Order.Add(orderVM.Orders);
_unitOfWork.Save();
else
{
failedLines = failedLines + "," + orderVM.Orders.CustName;
}
}
if (failedLines.Length > 0)
{
ViewBag.Failed = true;
StringBuilder sb = new StringBuilder();
//
// populate string builder with failed line
//
// downlaod csv file
return File(Encoding.ASCII.GetBytes(sb.ToString()), "text/csv", "Error_log.csv");
}
else // all orders processed successfully
{
ViewBag.Failed = false;
return View(orderVM);
}
}
보기의 자바 스크립트 :
@section Scripts{
if (ViewBag.failed)
{
<script>
swal("Error Occured!", "Failed to process All Orders", "error")
.then((value) => {})
</script>
}
else
{
<script>
swal("Success!", "Orders were Processed Successfully!", "success")
.then((value) => { window.location.href = '/UserRole/Order'; })
</script>
}
}
말했듯이 동시에 두 개의 응답을 반환 할 수 없습니다. CSV 데이터가 실패한 순서를 표시하는 텍스트 영역이있는 문제를 해결하고 텍스트를 파일로 다운로드하는 옵션을 사용합니다.
이 자바 스크립트 기능을 사용하여 TextArea에서 파일을 다운로드 할 수 있습니다.
function generateTextFile(textareaElement, filenameWithoutExtension) {
var textToWrite = textareaElement.val();
var textFileAsBlob = new Blob([textToWrite], {type:'text/csv'});
var fileNameToSaveAs = filenameWithoutExtension + ".csv";
var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";
if (window.webkitURL != null) {
// Chrome allows the link to be clicked
// without actually adding it to the DOM.
downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
}
else {
// Firefox requires the link to be added to the DOM
// before it can be clicked.
downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
downloadLink.onclick = destroyClickedElement;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
}
downloadLink.click();
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다