首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从控制器的操作中以ActionResult的形式返回XML?

从控制器的操作中以ActionResult的形式返回XML?
EN

Stack Overflow用户
提问于 2008-09-25 18:01:13
回答 9查看 99.9K关注 0票数 144

在ASP.NET MVC中,从控制器的操作返回XML的最佳方式是什么?有一种很好的方法可以返回JSON,但不适用于XML。我真的需要通过View来路由XML吗,或者我是否应该采用Response.Write的非最佳实践方式?

EN

回答 9

Stack Overflow用户

发布于 2010-12-01 23:29:52

代码语言:javascript
复制
return this.Content(xmlString, "text/xml");
票数 141
EN

Stack Overflow用户

发布于 2012-10-04 06:55:47

如果您正在使用优秀的Linq-to-XML框架构建XML,那么这种方法会很有帮助。

我在操作方法中创建了一个XDocument

代码语言:javascript
复制
public ActionResult MyXmlAction()
{
    // Create your own XDocument according to your requirements
    var xml = new XDocument(
        new XElement("root",
            new XAttribute("version", "2.0"),
            new XElement("child", "Hello World!")));

    return new XmlActionResult(xml);
}

这个可重用的自定义ActionResult会为您序列化XML。

代码语言:javascript
复制
public sealed class XmlActionResult : ActionResult
{
    private readonly XDocument _document;

    public Formatting Formatting { get; set; }
    public string MimeType { get; set; }

    public XmlActionResult(XDocument document)
    {
        if (document == null)
            throw new ArgumentNullException("document");

        _document = document;

        // Default values
        MimeType = "text/xml";
        Formatting = Formatting.None;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.Clear();
        context.HttpContext.Response.ContentType = MimeType;

        using (var writer = new XmlTextWriter(context.HttpContext.Response.OutputStream, Encoding.UTF8) { Formatting = Formatting })
            _document.WriteTo(writer);
    }
}

如果需要,您可以指定MIME类型(如application/rss+xml)以及是否应缩进输出。这两个属性都有合理的默认值。

如果您需要UTF8以外的编码,那么也可以简单地为其添加一个属性。

票数 32
EN

Stack Overflow用户

发布于 2009-10-16 14:11:36

如果您只对通过请求返回xml感兴趣,并且您有xml“块”,那么您可以这样做(作为控制器中的一个操作):

代码语言:javascript
复制
public string Xml()
{
    Response.ContentType = "text/xml";
    return yourXmlChunk;
}
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/134905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档