1. ホーム
  2. asp.net

[解決済み] コントローラのアクションからXMLをActionResultとして返しますか?

2022-05-13 12:14:36

質問

ASP.NET MVCでコントローラのアクションからXMLを返すのに最適な方法は何でしょうか。 JSONを返すには良い方法がありますが、XMLにはありません。 本当にViewを通してXMLをルーティングする必要があるのでしょうか、それともResponse.Writeというベストプラクティスではない方法を取るべきでしょうか。

どのように解決するのですか?

使用方法 MVCContrib の XmlResult Action を使用します。

参考までに、彼らのコードを以下に示します。

public class XmlResult : ActionResult
{
    private object objectToSerialize;

    /// <summary>
    /// Initializes a new instance of the <see cref="XmlResult"/> class.
    /// </summary>
    /// <param name="objectToSerialize">The object to serialize to XML.</param>
    public XmlResult(object objectToSerialize)
    {
        this.objectToSerialize = objectToSerialize;
    }

    /// <summary>
    /// Gets the object to be serialized to XML.
    /// </summary>
    public object ObjectToSerialize
    {
        get { return this.objectToSerialize; }
    }

    /// <summary>
    /// Serialises the object that was passed into the constructor to XML and writes the corresponding XML to the result stream.
    /// </summary>
    /// <param name="context">The controller context for the current request.</param>
    public override void ExecuteResult(ControllerContext context)
    {
        if (this.objectToSerialize != null)
        {
            context.HttpContext.Response.Clear();
            var xs = new System.Xml.Serialization.XmlSerializer(this.objectToSerialize.GetType());
            context.HttpContext.Response.ContentType = "text/xml";
            xs.Serialize(context.HttpContext.Response.Output, this.objectToSerialize);
        }
    }
}