Как вернуть строку XML в качестве результата действия в MVC

Возможный дубликат:
Как лучше всего вернуть XML из действия контроллера в ASP.NET MVC?

Я могу вернуть JSON и частичные представления (html) как действительный ActionResult, но как вернуть строку XML?


person Toran Billups    schedule 18.05.2009    source источник
comment
Используйте XmlResult из MvcContrib на Codeplex. Также это похоже на повторяющийся вопрос.   -  person MotoWilliams    schedule 18.05.2009


Ответы (4)


Вы можете использовать return this.Content(xmlString, "text/xml"); для возврата построенной XML-строки из действия.

person John Downey    schedule 18.05.2009
comment
Если вы работаете с Linq to XML, создание строковой формы документа расточительно - лучше работать с потоками. - person Drew Noakes; 04.10.2012

Для JSON / XML я написал Фильтр действий XML / JSON, который упрощает работу без обработки особых случаев в обработчике действий (что, похоже, вы и делаете).

person aleemb    schedule 18.05.2009
comment
Для всех, кто читает этот пост - обязательно ознакомьтесь с его фильтром ... он работает хорошо. +1 в алемб за то, что поделился! - person Mark; 09.09.2010

Другой способ сделать это - использовать XDocument:

using System.Xml.Linq;

public XDocument ExportXml()
{
    Response.AddHeader("Content-Type", "text/xml");

    return XDocument.Parse("<xml>...");
}
person Levitikon    schedule 14.10.2011
comment
Некоторые эксперименты в MVC 4 (и, возможно, в более ранних версиях) показывают, что здесь возвращается тип MIME text/html. - person Drew Noakes; 04.10.2012

Если вы создаете XML с помощью Linq-to-XML, тогда посмотрите мой ответ здесь. Это позволяет вам писать такой код:

public ActionResult MyXmlAction()
{
    var xml = new XDocument(
        new XElement("root",
            new XAttribute("version", "2.0"),
            new XElement("child", "Hello World!")));

    return new XmlActionResult(xml);
}
person Drew Noakes    schedule 03.10.2012