OnResultExecuting获取渲染后的html内容后,OnResultExecuted重新写入,并发问题?????

夏日麦田 2019-06-23 02:53:43
public class ResultFilterAttribute : ActionFilterAttribute
{
//用于保存渲染后的html文本
StringBuilder sb;
//这几个Writer照着写就行了
StringWriter sw;
HtmlTextWriter hw;
TextWriter tw;

/// <summary>
///加载 "视图" 前执行
/// </summary>
/// <param name="filterContext"></param>
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
//保存html
sb = new StringBuilder();
//两个writer
sw = new StringWriter(sb);
hw = new HtmlTextWriter(sw);
//记住Response中原本输出流,用于返回本次请求的html,与下一句配合使用
//在渲染结束后,向tw内写入html内容
tw = filterContext.RequestContext.HttpContext.Response.Output;
//过滤器自己输出流,用于获取渲染后的html内容
filterContext.RequestContext.HttpContext.Response.Output = hw;
}
/// <summary>
/// 加载"视图" 后执行
/// </summary>
/// <param name="filterContext"></param>
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
string html = sb.ToString();

//对页面进行二次处理 在输出新的html 写入 filterContext.RequestContext.HttpContext.Response.Output

tw.Write(html);
}
}

问题:如果多次刷新页面,会导致内容追加显示别的HTML内容,或者是页面内容无法显示,显示空白,请问如何处理并发,正常输出页面
...全文
438 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏日麦田 2019-07-09
  • 打赏
  • 举报
回复
在OnActionExecuted中获取页面内容 修改输出
夏日麦田 2019-06-24
  • 打赏
  • 举报
回复
问题:如果多次刷新页面,会导致内容追加显示别的HTML内容,或者是页面内容无法显示,显示空白,请问如何处理并发,正常输出页面
夏日麦田 2019-06-24
  • 打赏
  • 举报
回复
怎么一个大神都没有????????????????????

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧