using System.Web.Mvc; namespace MVCDerbyService.Results { public class AcceptHeaderResult : ActionResult { private object payload { get; set; } public AcceptHeaderResult(object data) { payload = data; } public override void ExecuteResult(ControllerContext context) { string accept = context.HttpContext.Request.Headers["accept"].ToLower(); ActionResult result = null; if (accept.Contains("text/html" )) { context.Controller.ViewData.Model = payload; result = new ViewResult() { TempData = context.Controller.TempData, ViewData = context.Controller.ViewData }; } else if (accept.Contains("application/json")) { result = new JsonResult() { Data = payload, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } else if (accept.Contains("text/xml")) { result = new XmlResult(payload); } else { result = new HttpStatusCodeResult(406, "Type not supported. Supported MIME types are text/html, application/json, and text/xml."); } result.ExecuteResult(context); } } }