下载而不是显示(渲染)生成的XML

时间:2012-10-23 16:34:32

标签: xml asp.net-mvc filestreamresult

在我的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,例如?

2 个答案:

答案 0 :(得分:4)

这似乎可以做你想要的:

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; }
    }
}

答案 1 :(得分:0)

您可以使用XmlDocument()并将XML写入它,然后使用Save property?