在网上找了很久,发现很少需要输出前替换掉内容的,特自己写了个以备忘!
思路很简单,主要是语法网上提供很少,微软文档也不知从哪找起,费了好多时间,才找齐
一个是将输出转为字符串
ContentResult result = (ContentResult)context.Result;
操作完后,再转回来,这个语法网上也是很少见,都不知微软怎么想的,非要把这些基本的语法藏着,还是我没学到家.,这里如果不想输出有反斜扛的,一定要用下面这种,需要反斜扛的,则用JsonResult即可,这也是我找了好久才找到的方法!
context.Result = new ContentResult { Content = res, ContentType = "application/json" };
源码如下:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
namespace MyFilter
{
/// <summary>
/// 拦截过滤输出内容里的404默认图片
/// </summary>
public class NoImgActionFilterAttribute : ActionFilterAttribute
{
/// <summary>
/// 输出前拦截,当为后台管理时过滤默认404图片地址为空
/// </summary>
/// <param name="context"></param>
public override void OnActionExecuted(ActionExecutedContext context)
{
ContentResult result = (ContentResult)context.Result;
string res = result.Content;
res = res.Replace(Common.Constants.NoImgUrl, null);
context.Result = new ContentResult { Content = res, ContentType = "application/json" };
base.OnActionExecuted(context);
}
}
}