2009-05-18 21 views
54

thể trùng lặp:
What is the best way to return XML from a controller's action in ASP.NET MVC?Làm thế nào để trả về một chuỗi XML như một kết quả hành động trong MVC

tôi có thể trở về JSON và quang cảnh một phần (html) như là một ActionResult hợp lệ , nhưng làm cách nào để trả về một chuỗi XML?

+0

Sử dụng XmlResult từ [MvcContrib] (http://mvccontrib.codeplex.com) trên Codeplex. Ngoài ra, điều này có vẻ là một [câu hỏi trùng lặp] (http://stackoverflow.com/questions/134905/what-is-the-best-way-to-return-xml-from-a-controllers-action-in-asp -net-mvc). – MotoWilliams

Trả lời

127

Bạn có thể sử dụng return this.Content(xmlString, "text/xml"); để trả lại chuỗi XML được tạo từ một hành động.

+0

Câu trả lời hay, cảm ơn – Rippo

+1

Nếu bạn đang làm việc với LINQ to XML, việc tạo một dạng chuỗi tài liệu là lãng phí - đó là [tốt hơn để làm việc với các luồng] (http://stackoverflow.com/a/12718046/24874) . –

7

Đối với JSON/XML, tôi đã viết XML/JSON Action Filter giúp bạn dễ dàng giải quyết mà không xử lý các trường hợp đặc biệt trong trình xử lý tác vụ của bạn (đó là điều bạn đang làm).

+0

Đối với bất cứ ai đọc bài đăng này - chắc chắn kiểm tra bộ lọc của mình ... nó hoạt động tốt. +1 để aleemb để chia sẻ! – Mark

4

Một cách khác để làm điều này là bằng cách sử dụng XDocument:

using System.Xml.Linq; 

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

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

Một số thử nghiệm trong MVC 4 (và có thể là các phiên bản trước đó) gợi ý rằng kiểu MIME được trả về ở đây là 'text/html'. –

4

Nếu bạn đang xây dựng XML sử dụng LINQ-to-XML sau đó check out my answer here. Nó cho phép bạn viết mã như sau:

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

    return new XmlActionResult(xml); 
} 
Các vấn đề liên quan