我在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());
}
答案 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。