c# - 在JsonResult中返回文件还是在ActionResult中返回Json数据?

标签 c# .net json http-post jsonresult

在后端使用 MVC3 .net Controller ,我正在执行 HttpPost 通过 HttpContext 提交文件。

当服务器读取文件时,会随上传结果返回一个字符串列表。

到目前为止,我已经能够实现两种方案:

1) 将字符串列表作为单个制表符分隔的字符串返回为 JsonResult

string tabSeparatedMessages = "";

foreach (string message in messageLog)
{
    tabSeparatedMessages = tabSeparatedMessages + message;

    if (message != messageLog[messageLog.Count - 1])
    {
        tabSeparatedMessages = tabSeparatedMessages + '\n';
    }
}
return this.Json(new
{
    success = true,
    total = messageLog.Count,
    data = tabSeparatedMessages
}, "text/html", JsonRequestBehavior.AllowGet);

2) 将文本文件中的字符串列表作为 ActionResult 返回

string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".txt";

using (StreamWriter writer = new StreamWriter(fileName))
{
    foreach (string message in messageLog)
    {
        writer.WriteLine(message);
    }
}

return File(fileName, "text/plain", "UPLOAD_RESULTS.txt");

我的问题是我想要这些方法中的每一个的元素,但很难将这两种方法结合起来。我想要 JsonResult,以便我可以返回 bool “成功”值以在客户端上 Release模式等待消息。我想要 ActionResult,以便客户端可以简单地下载文件,而不是将字符串列表解析到 GUI 组件中。

有没有办法返回一个要下载的文本文件作为 JsonResult 的一部分,或者与 ActionResult 一起返回 Json 数据?

感谢您的阅读

最佳答案

不幸的是,您一次只能返回一种结果类型。如果我是您,并且确实需要将 upload_results.txt 下载到客户端,我的 json 结果中会有一个参数,该参数是对服务器上文件的引用。

因此,客户端首先收到上传成功的响应,然后您隐藏模式对话框,然后使用 javascript 对 upload_results.txt 文件发出另一个请求。

关于c# - 在JsonResult中返回文件还是在ActionResult中返回Json数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9771066/

相关文章:

c# - Monotouch EKEvent 注释未保存

c# - 使用 FFMPEG/FFMediaElement (FFME) 在 WPF 应用程序中以低延迟播放 RTSP

.net - 将 WPF 应用程序重写为 Surface

javascript - AngularJS |根据地理位置(纬度、经度)对 JSON 进行排序

php - 如何将 mysql_fetch_row 解析为 JSON 对象

c# - 调度任务与任务创建

c# - 如何排队/等待 TPL 任务完成

c# - 打开/关闭编译器优化标志的CPU密集型应用程序

.net - VB.NET 在运行时确定项目的导入命名空间

json - std::string 到 rapidJson 对象的转换