2009-05-18 6 views
54

Possible en double:
What is the best way to return XML from a controller's action in ASP.NET MVC?Comment retourner une chaîne XML comme résultat de l'action dans MVC

Je suis en mesure de revenir JSON et une vue partielle (html) comme ActionResult valide , mais comment retourner une chaîne XML?

+0

Utilisez le XmlResult de [MvcContrib] (http://mvccontrib.codeplex.com) sur Codeplex. Aussi cela semble être une [question en double] (http://stackoverflow.com/questions/134905/what-is-the-best-way-to-return-xml-from-a-controllers-action-in-asp -net-mvc). – MotoWilliams

Répondre

127

Vous pouvez utiliser return this.Content(xmlString, "text/xml"); pour renvoyer une chaîne XML générée à partir d'une action.

+0

Bonne réponse, merci – Rippo

+1

Si vous travaillez avec Linq to XML, créer une forme de chaîne du document est inutile - c'est [mieux de travailler avec les flux] (http://stackoverflow.com/a/12718046/24874) . –

7

Pour JSON/XML j'ai écrit un XML/JSON Action Filter qui le rend très facile à manipuler sans gérer des cas spéciaux dans votre gestionnaire d'actions (ce que vous semblez faire).

+0

Pour ceux qui lisent ce post - vérifiez définitivement son filtre ... ça marche bien. +1 à aleemb pour le partage! – Mark

4

Une autre façon de le faire est à l'aide XDocument:

using System.Xml.Linq; 

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

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

Certaines expérimentations dans MVC 4 (et éventuellement des versions antérieures) suggèrent que le type MIME renvoyé ici est 'text/html'. –

4

Si vous construisez le XML LINQ à XML puis check out my answer here. Il vous permet d'écrire du code comme ceci:

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

    return new XmlActionResult(xml); 
} 
Questions connexes