c# - 文件上传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());
}
解决方案
失败时。返回同一视图并发送有关 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。
推荐阅读
- django - 使用 ORM 的 Django 查询:删除所有没有帖子的用户
- android - 对于下游用户,Kotlin 是否与 Java 一样受到支持?
- ios - UISplitViewController 侧面板导航栏
- python - 是否有用于在 python 中查找给定日期的每月第 N 个工作日的功能?
- c - 在 C 中处理字符和整数时的神秘 ASCII 值
- visual-studio - 安装 Microsoft Visual Studio Professional 2017 时出现问题 - 安装期间“找不到与以下参数匹配的产品”
- python - Python uvicorn:术语“uvicorn”未被识别为 cmdlet、函数、脚本文件的名称
- python - 列表理解与拆分
- r - qqline需要z分数吗?
- python - Python - 如何在 pandas/JSON 中展平 JSON 消息