gpt4 book ai didi

asp.net-mvc - 下载生成的文件后重定向/显示 View

转载 作者:行者123 更新时间:2023-12-03 21:22:51 24 4
gpt4 key购买 nike

我有一个下载动态生成文件的 Controller 操作:

    public ActionResult DownloadFile()
{
var obj = new MyClass { MyString = "Hello", MyBool = true };
var ser = new XmlSerializer(typeof(MyClass));
var stream = new MemoryStream();
ser.Serialize(stream, obj);
stream.Position = 0;

Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=myfile.xml");
Response.ContentType = "application/xml";

// Write all my data
stream.WriteTo(Response.OutputStream);
Response.End();

return Content("Downloaded");
}

仅供引用:
    public class MyClass
{
public string MyString { get; set; }
public int MyInt { get; set; }
}

这是有效的,并且文件 (myfile.xml) 已下载。
但是,“已下载”消息不会发送到浏览器。

同样,如果我替换 return Content("Downloaded");return Redirect("www.something.com");然后在文件下载之前重定向浏览器。

作为序言,用户旅程是:
  • 用户在上一个 View 中填写表单
  • 表单已提交
  • 生成并下载 XML
  • 用户被重定向/显示“已下载” View (因此按 F5 不会重新发布表单)
  • 最佳答案

    正如罗斯所说,您只能对 HTTP 请求返回一个响应。
    在这种情况下我做的是:

  • 向服务器发送请求
  • 服务器生成文件并将其存储在某些服务器端数据结构(缓存、用户 session 、TempData)中
  • 服务器返回 RedirectToAction() (POST, REDIRECT, GET 模式)
  • 重定向操作返回一个带有一些 javascript 的 View ,其中
  • 通过设置 window.location.href 触发预生成文件的下载将文件发送回浏览器的特殊下载操作的属性
  • 关于asp.net-mvc - 下载生成的文件后重定向/显示 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065697/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com