为了账号安全,请及时绑定邮箱和手机立即绑定

下载 CSV 文件并显示 Sweet Alert 错误消息

下载 CSV 文件并显示 Sweet Alert 错误消息

SMILET 2023-09-28 09:39:47
我有一个带有文本区域的视图(用户在其中输入所有订单)和一个提交按钮,一旦按下“提交”按钮,操作方法将处理所有订单并将它们保存在数据库中。如果所有订单均已成功处理,我将返回到带有指示器 (ViewBag) 的视图,该指示器将从 JavaScript 中弹出一个甜蜜的警报。如果一个或多个订单失败,我将下载一个 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);}}视图中的 Java 脚本:@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>    }}
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

正如你所说,你不能同时返回两个响应,我将通过一个文本区域来解决它,其中包含显示失败订单的 CSV 数据,并可以选择将文本下载到文件中


您可以使用此 Javascript 函数从 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();

}



查看完整回答
反对 回复 2023-09-28
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信