Перенаправить обратно с ошибочными строками и сообщением после загрузки файла MVC c # - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть кнопка importFile на HTML-странице, после нажатия на нее «Импорт файла», обработайте файл и вернитесь обратно, если возникнут какие-либо ошибки, с сообщением «Ошибка загрузки файла с ошибками. Проверьте загруженный файл ошибок». Если ошибок нет, просто сообщение «Файл успешно загружен». Вот как выглядит мой взгляд:

 @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 голосов
/ 02 апреля 2019

При сбое. вернитесь к тому же 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 в качестве параметра. Используя этот идентификатор ошибки, вы можете создать необходимый файл журнала ошибок. FileDownloadAction должен перезапустить FileResult.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...