public static void Begin(MvcContext ctx) { WebStopwatch.Start(); MvcEventPublisher.Instance.BeginProcessMvc(ctx); List <ProcessorBase> processorList = initProcessor(); ProcessContext context = new ProcessContext(ctx); foreach (ProcessorBase p in processorList) { if (context.isEnd()) { break; // showEnd 会跳过下面所有处理器,除了 RenderProcessor } if (context.ctx.utils.GetCancelMvcProcessor().Contains(p.GetType())) { continue; // cancelProcessor 会跳过指定处理器 } p.Process(context); context.ctx.utils.skipCurrentProcessor(false); // 重置状态 // skipCurrentProcessor 会跳过当前处理器的剩余部分 } // 呈现页面内容 if (skinRender(ctx) == false) { new RenderProcessor().Process(context); } ctx.web.CompleteRequest(); }
void publisher_Begin_Render(object sender, MvcEventArgs e) { // 获取即将输出的内容 string output = e.ctx.utils.getCurrentOutputString(); // 修改输出的内容 output = output.Replace("#{pageElapsedMilliseconds}", WebStopwatch.Stop().ElapsedMilliseconds.ToString("0.0000")); // 将修改后的内容放回上下文 e.ctx.utils.setCurrentOutputString(output); }
private static String getTimeJs() { StringBuilder sb = new StringBuilder(); sb.Append("<script>var eleTime = document.getElementById('elapseTime');if( eleTime ) {"); sb.AppendFormat("eleTime.innerHTML='{0}';", (WebStopwatch.Stop().ElapsedMilliseconds / 1000.0).ToString("0.0000")); sb.Append("};"); sb.Append("var eleSql = document.getElementById('sqlQueries');if( eleSql ) {"); sb.AppendFormat("eleSql.innerHTML='{0}';", DbContext.getSqlCount()); sb.Append("}</script>"); return(sb.ToString()); }