鑑於您使用Linq to XML來編寫響應XML,您可能會喜歡使用與我相同的方法。
我在操作方法中創建了一個XDocument
。
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
的串行化作爲XDocument
XML文本爲您的響應流。
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以外的編碼,那麼添加屬性也很簡單。
可能的[在ASP.NET MVC中從控制器的動作返回XML的最佳方式是什麼?](http://stackoverflow.com/questions/134905/what-is-the-best-way-to -return-xml-a-controllers-action-in-asp-net-mvc) – 2012-10-04 08:22:52