ASP.NET MVC:将数据作为文件下载到本地计算机."另存为"对话框



我通过下面的代码在 ASP.NET MVC3中动态生成一个xml(序列化我的自定义类型XMLDocType(:

XMLDocType XMLdoc = new XMLDocType();
… generating contente for XMLdoc … 
XmlSerializer xml = new XmlSerializer(typeof(XMLDocType));
TextWriter writer = new StreamWriter("xmloutput.xml");
xml.Serialize(writer, XMLdoc);
writer.Close();

如何通过浏览器中的正常下载过程(即打开"另存为"对话框(将 xml 内容下载到本地计算机(而不是服务器(中?

谢谢。

您可以使用扩展ActionResult并在MVC操作中返回它的类。此外,您写入MemoryStream而不是写入本地服务器文件,并将其作为控制器操作的响应返回给用户。

public class FileResult : ActionResult
{
public String ContentType { get; set; }
public byte[] FileBytes { get; set; }
public String SourceFilename { get; set; }
public FileResult(byte[] sourceStream, String contentType, String sourceFilename)
{
FileBytes = sourceStream;
SourceFilename = sourceFilename;
ContentType = contentType;
} 
}
public ActionResult DownloadFile()
{   
MemoryStream memoryStream = new MemoryStream(); 
XMLDocType XMLdoc = new XMLDocType();
XmlSerializer xml = new XmlSerializer(typeof(XMLDocType));
TextWriter writer = new StreamWriter(memoryStream);
xml.Serialize(writer, XMLdoc);
FileResult file = new FileResult(memoryStream.ToArray(), "text/xml", "MyXMLFile.xml");
writer.Close();
return file;
}

最新更新