首页 > 解决方案 > 文件上传MVC c#后用错误的行和消息重定向回来

问题描述

我在 HTML 页面上有一个 importFile 按钮,单击它导入文件后,处理文件并返回,如果有任何错误消息“文件上传失败并出现错误。请检查下载的错误文件”。如果没有错误,则只是“文件上传成功”消息。这就是我的看法:

 @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());
        }



标签: c#asp.net-mvc

解决方案


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

在 View 上,检查 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 应该 reutn FileResult。


推荐阅读