2009-05-18 5 views
54

Mögliche Duplizieren zurückzukehren:
What is the best way to return XML from a controller's action in ASP.NET MVC?Wie eine XML-Zeichenfolge als Aktion Ergebnis in MVC

ich in der Lage bin JSON und Teilansichten (html) als gültige Action zurückzukehren , aber wie würde man eine XML-Zeichenfolge zurückgeben?

+0

Verwenden Sie das XmlResult von [MvcContrib] (http://mvccontrib.codeplex.com) auf Codeplex. Auch das scheint eine [doppelte Frage] zu sein (http://stackoverflow.com/questions/134905/what-ist-the-best-way-to-return-xml-from-a-controllers-action-in-asp -net-mvc). – MotoWilliams

Antwort

127

Sie könnten return this.Content(xmlString, "text/xml"); verwenden, um eine erstellte XML-Zeichenfolge aus einer Aktion zurückzugeben.

+0

Große Antwort, danke – Rippo

+1

Wenn Sie mit Linq zu XML arbeiten, ist das Erstellen einer Zeichenfolge Formular des Dokuments verschwenderisch - es ist [besser mit Streams arbeiten] (http://stackoverflow.com/a/12718046/24874) . –

7

Für JSON/XML habe ich eine XML/JSON Action Filter geschrieben, die es sehr einfach macht, ohne spezielle Fälle in Ihrem Action-Handler zu behandeln (was Sie anscheinend tun).

+0

Für alle, die diesen Beitrag lesen - auf jeden Fall seinen Filter überprüfen ... es funktioniert gut. +1 zu Aleemb für das Teilen! – Mark

4

Ein anderer Weg, dies zu tun ist durch XDocument mit:

using System.Xml.Linq; 

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

    return XDocument.Parse("<xml>..."); 
} 
+0

Einige Experimente in MVC 4 (und möglicherweise früheren Versionen) legen nahe, dass der hier zurückgegebene MIME-Typ 'text/html' ist. –

4

Wenn Sie die XML-Gebäude sind mit Linq-to-XML dann check out my answer here. Es ermöglicht Ihnen, Code wie folgt zu schreiben:

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

    return new XmlActionResult(xml); 
} 
Verwandte Themen