闽公网安备 35020302035485号

5、执行ResultFilter.OnResultExecuted方法
/// <summary>
/// 堆代码 duidaima.com
/// 结果过滤器
/// </summary>
public class MyResultFilter : Attribute, IResultFilter
{
#region IResultFilter
/// <summary>
///执行之前
/// </summary>
/// <param name="context"></param>
public void OnResultExecuting(ResultExecutingContext context)
{
if (context.Result is JsonResult)
{
JsonResult result = (JsonResult)context.Result;
//进行返回结果进行再次封装
context.Result = new JsonResult(new
{
Success = true,
Message = "Ok",
Data = result.Value
});
}
}
/// <summary>
///执行之后
/// </summary>
/// <param name="context"></param>
public void OnResultExecuted(ResultExecutedContext context)
{
var result = context.Result;//拿到Json结果
Console.WriteLine("在执行之后ResultFilter.OnResultExecuted方法");
}
#endregion
#region IAsyncResultFilter
/// <summary>
/// 执行时
/// </summary>
/// <param name="context"></param>
/// <param name="next"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
{
if (context.Result is JsonResult)
{
JsonResult result = (JsonResult)context.Result;
context.Result = new JsonResult(new
{
Success = true,
Message = "Ok",
Data = result.Value
});
}
await next.Invoke();
}
#endregion
}
操作级别作用范围过滤器: [Route("api/[controller]")]
[ApiController]
public class ResultFilterController : Controller
{
/// <summary>
/// 测试:调用返回JSON
/// </summary>
/// <returns></returns>
[HttpGet]
[MyResultFilter]//作用范围是操作过滤器级别
public IActionResult Test()
{
return Json(new
{
Id = 008,
Name = "Aliang",
Age = 28
});
}
}
三、验证: