通过OnResultExecuted设置返回内容为JSONP

时间:2023-03-27 08:16:20
    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);
}
}
}
}

说明:非原创,来自互联网。