Asp.net mvc返回Xml结果?

RT~~我想让ASP.NET MVC返回XML结果,应该怎么做?

  • star65225692 - 1年前

    继承ActionResult,然后重写就可以了,代码如下:

    public class XmlResult : ActionResult
        {
            // 可被序列化的内容
            object Data { get; set; }
    
            // Data的类型
            Type DataType { get; set; }
    
            // 构造器
            public XmlResult(object data, Type type)
            {
                Data = data;
                DataType = type;
            }
    
            // 主要是重写这个方法
            public override void ExecuteResult(ControllerContext context)
            {
                if (context == null)
                {
                    throw new ArgumentNullException("context");
                }
    
                HttpResponseBase response = context.HttpContext.Response;
    
                // 设置 HTTP Header 的 ContentType
                response.ContentType = "text/xml";
    
                if (Data != null)
                {
                    // 序列化 Data 并写入 Response
                    XmlSerializer serializer = new XmlSerializer(DataType);
                    MemoryStream ms = new MemoryStream();
                    serializer.Serialize(ms, Data);
                    response.Write(System.Text.Encoding.UTF8.GetString(ms.ToArray()));
                }
            }
        }