【问题标题】:Download instead of display (render) generated XML下载而不是显示(渲染)生成的 XML
【发布时间】:2012-10-13 15:58:53
【问题描述】:

在我的 ASP.Net MVC 应用程序的控制器中,我序列化了一个类,并尝试提供内容以供立即下载。

到目前为止,我的控制器返回了 FileStreamResult

    public FileStreamResult Create(MyViewMode vm)
    {
        var xml= _mySerializer.SerializeToXml(vm);

        var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml));
        return new FileStreamResult(ms, "application/xml");
    }

这可行,但是它在浏览器中输出 XML。

有没有办法让它以 MyXml.xml 格式下载文件?

【问题讨论】:

  • 我认为这取决于浏览器根据 MIME 类型而不是您的代码来确定如何处理内容
  • 您是否尝试将content-disposition attachment 添加到页面头部?

标签: xml asp.net-mvc filestreamresult


【解决方案1】:

您可以使用 XmlDocument() 并将 XML 写入其中,然后使用 Save 属性吗?

【讨论】:

    【解决方案2】:

    这似乎是你想要的:

    public class HomeController : Controller
    {
        public ActionResult MyXml()
        {
            var obj = new MyClass {MyString = "Hello", MyInt = 42, MyBool = true};
            var ser = new XmlSerializer(typeof(MyClass));
            var stream = new MemoryStream();
            ser.Serialize(stream, obj);
            stream.Position = 0;
            return File(stream, "application/xml", "MyXml.xml");
        }
    
        public class MyClass
        {
            public string MyString { get; set; }
            public int MyInt { get; set; }
            public bool MyBool { get; set; }
        }
    }
    

    【讨论】:

    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多