如何在 ASP.NET MVC 中向客户端发送 XML 文件

Posted

技术标签:

【中文标题】如何在 ASP.NET MVC 中向客户端发送 XML 文件【英文标题】:How to send XML file to client in ASP.NET MVC 【发布时间】:2011-02-23 17:28:00 【问题描述】:

在 ASP.NET MVC 中,我有一个数据库表。我想在某个视图页面上有一个按钮,如果某些用户单击该按钮,我的应用程序将生成包含数据库中所有行的 XML 文件。然后应该将包含 XML 的文件发送到客户端,以便用户看到一个下载弹出窗口。

同样,我想允许用户上传一个 XML 文件,其内容将被添加到数据库中。

让用户上传和下载文件的最简单方法是什么?

感谢大家的回答

编辑: 这是我的方法:

public FileContentResult Download() 
        if(model.Series.Count() < 1) 
            byte[] content = new byte[0];
            return new FileContentResult(content, "Series");
        
        XmlSerializer serializer = new XmlSerializer(model.Series.FirstOrDefault().GetType());

        MemoryStream xmlStream = new MemoryStream();
        foreach (Series s in model.Series) 
            serializer.Serialize(xmlStream, s);
        

        byte[] content2 = new byte[xmlStream.Length];
        xmlStream.Position = 0;
        xmlStream.Read(content2, 0, (int) xmlStream.Length);

        return File(content2, "Series");

其中模型是 DataContext。但是,这不起作用。当我尝试下载数据时出现此错误:

XML Parsing Error: junk after document element
Location: http://localhost:1399/Xml/Download
Line Number 7, Column 10:</Series><?xml version="1.0"?>
---------^

【问题讨论】:

【参考方案1】:

下载部分可以使用FileStreamResult

This page有上传下载示例;看看吧。

【讨论】:

【参考方案2】:

一个 XML 文档只能有一个***元素。在元素结束之后,你不能拥有其他任何东西。看起来在 "&lt;/Series&gt;" 元素之后你有 "?xml version="1.0>", 这是无效的。

【讨论】:

以上是关于如何在 ASP.NET MVC 中向客户端发送 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC 中向控制器传递多个参数;此外,在 LINQ-to-SQL 中生成动态查询

在ASP.NET MVC的Action中直接接受客户端发送过来的HTML内容片段

从控制器事件(无客户端请求)向视图发送数据 ASP.NET MVC 4

Asp.net MVC Comet推送

在asp.net中向客户端导出大量数据

如何在asp .net mvc中安排发送电子邮件