【发布时间】:2019-12-16 17:55:06
【问题描述】:
我正在ASP.NET MVC3... 中编写程序我如何导出动态生成的.xml 文件以供下载?
我通过视图中的按钮调用导出例程:
@using (Html.BeginForm(FormMethod.Post))
{
<div>
…
<input type="submit" value="Export to XML" class="btn btn-primary" style="background-color: green;" asp-action="Export" asp-controller="Manage" />
…
</div>
通过这个按钮,我想生成一个 XML 文件并打开一个下载另存为对话框以将其下载到本地计算机……
然后我在 ManageController 中有以下导出操作:
public IActionResult Export(IFormCollection form)
{
… gathers form info and gets the table to be exported: oTable
// export to .xml here!
ExportXMLModel e = new ExportXMLModel();
return (e.DoExportXML(oTable)); // Doesnt export...
// sorry for the clumsy code…, but I'll write it better afterwards.
}
这里定义了DoExportXML(这里我创建了一个MemoryStream…):
public class ExportXMLModel
{
public ActionResult DoExportXML(List<itemType> ol)
{
XMLDocType XMLdoc = new XMLDocType();
… fills the XMLdoc object …
MemoryStream memoryStream = new MemoryStream();
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;
}
}
然后定义 FileResult 类:
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;
}
}
这不会导致文件被下载……
我怎样才能做出这样的回应?使用 ASP.NET MVC 还是使用 jQuery?
非常感谢您的任何回答。
【问题讨论】:
-
你不应该构建自己的 FileResult,你应该使用built-in one。
标签: c# jquery html asp.net-mvc