文件上传MVC后,错误行和消息重定向返回

时间:2019-04-02 06:49:20

标签: c# asp.net-mvc

我在HTML页面上有一个importFile按钮,单击它的Import File后,处理该文件,如果有错误,则返回一条错误消息,提示“文件上传失败,请检查下载的错误文件。”如果没有错误,则仅显示“文件成功上传”消息。 这是我的看法:

 @using (Html.BeginForm("FileUpload", "Plt", FormMethod.Post, new { enctype = "multipart/form-data" }))

    {          

       <input type="file" name="file" />
       <input type="submit" value="OK" />
    }

服务器端代码:-

[HttpPost]
        public virtual ActionResult ImportFileData(HttpPostedFileBase importFile)
        {
            if (importFile.ContentLength > 0)
            {
                var target = new MemoryStream();
                importFile.InputStream.CopyTo(target);
                byte[] data = target.ToArray();
                var fileNameWithoutExtension = importFile.FileName.Remove(importFile.FileName.IndexOf("."));
                var file = new FileDetails(fileNameWithoutExtension, data, FileTypes.Xlsx);
                var importedFileDetails = PortalService.ImportFromExcel(file);
                return File(importedFileDetails.FileBytes, importedFileDetails.MimeType, importedFileDetails.FileName);
            }

            return RedirectToAction(MVC.SystemSetup.Index());
        }



1 个答案:

答案 0 :(得分:0)

失败时。返回同一个View,并发送有关ViewBag中失败的消息和代码。示例ViewBage.ErrorMessage和ViewBag.ErrorID。

在视图上,检查ViewBag.ErrorID是否为空。如果不为空,请创建一个<div>,它将显示错误消息,并作为下载文件的链接。

有点像下面的代码。

@if (ViewBag.ErrorID != null)
   {
      <div>
        Error : @ViewBag.ErrorMessage.ToString();
        @Html.ActionLink("Download Error Log", "FileDownloadAction", new { ErrorID = ViewBag.ErrorID });
       </div>
    }

FileDownloadAction应该接受ErrorID作为参数。使用此错误ID,您可以创建所需的错误日志文件。 FileDownloadAction应该返回FileResult。