2012-10-23 29 views
1

在我的ASP.Net MVC應用程序中的控制器中,我序列化一個類,並試圖提供立即下載的內容。下載而不是顯示(渲染)生成的XML

到目前爲止,我有我的控制器返回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爲例?

+1

我認爲這是到瀏覽器,以確定哪些基於MIME類型與內容做,而不是你的代碼 – Tommy

+0

你試圖添加'內容在頁面的頭部配置「附件」? – Zabavsky

回答

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

這是工作,但我不能在文件下載後返回視圖/重定向。單獨的問題 - http://stackoverflow.com/questions/13065697/redirect-show-view-after-generated-file-is-dowloaded – Alex

0

您可以使用XmlDocument()並將XML寫入它,然後使用Save屬性嗎?