public class JsonpAttribute : ActionFilterAttribute { /// <summary> /// 在执行操作结果后更改返回结果 /// </summary> public override void OnResultExecuted(ResultExecutedContext filterContext) { string callback = filterContext.HttpContext.Request["callback"]; if (!string.IsNullOrEmpty(callback)) { //判断返回的结果为JsonResult if (filterContext.Result is JsonResult) { JsonResult result = (JsonResult)filterContext.Result; //序列化json数据 string json = JsonConvert.SerializeObject(result.Data); //使用callback参数的函数名输出可执行的js函数 string newres = string.Format("{0}({1})", callback, json); //清空已经生成的数据 filterContext.HttpContext.Response.Clear(); //输出新的数据 filterContext.HttpContext.Response.Write(newres); } } } }
说明:非原创,来自互联网。