zoukankan      html  css  js  c++  java
  • ASP.NET 截获服务器生成的将要发送到客户端的html的方法

    有时候我们需要在将服务器端生成的html发送带客户端之前对这些html进行操作,比如生成静态html加之保存、改变生成的html中的某些内容等等,那么久可以通过如下的方案解决。

    我总结了两种方式,个人觉得比较好用,一种是重写Page.Render()方法。一种是通过IHttpmodule来实现。

    1)这种方法适合控制某个页面,在.aspx.cs里面重写Render()方法即可,该方法提供一个HtmlTextWriter 类型参数,里面就包含了将要发送到客户端的内容,根据asp.net声明周期知道Render阶段是在load事件之后触发的,所以,这个方法很适合完成我们想要的效果。下面是一个简单的例子:

       1:      protected override void Render(HtmlTextWriter writer)
       2:      {
       3:          TextWriter tempWriter = new StringWriter();
       4:          base.Render(new HtmlTextWriter(tempWriter));
       5:          string str = tempWriter.ToString(); //这个str里面已经包含了html。
       6:   
       7:         //然后可以对这个字符串进行处理,比如保存、替换等等
       8:          writer.Write(str); //再将修改好的html发送到客户端
       9:      }

    2)这种方法在应用级控制,更适合需要对某一类页面进行处理,或者所有页面比较方面。要注册接口的PreSendRequestContent方法,下面为一个例子,有关IHttpmodule内容,本文不重复了:

       1:          void context_PreSendRequestContent(object sender, EventArgs e)
       2:          {
       3:              HttpApplication app = (HttpApplication)sender;
       4:              HttpContext context = app.Context;
       5:              string url = context.Request.RawUrl;
       6:              StringWriter wr = new StringWriter();
       7:              context.Server.Execute(url, wr);
       8:              string htmlCon = wr.ToString();//字符串htmlCon 已经包含了将要发送到客户端的html。
       9:   
      10:          }

    3) 通过替换Response.Filter也可以实现。

  • 相关阅读:
    SpringBoot集成swagger后出现: Failed to start bean ‘documentationPluginsBootstrapper‘的解决方法
    [转]When allowCredentials is true, allowedOrigins cannot contain the special value “*“
    SpringBoot 集成Swagger后提通过http://localhost:8001/swaggerui.html#/访问得不到页面
    C#窗体开发
    如何查看一个域名所对应的IP地址?
    Vetur can't find `tsconfig.json` or `jsconfig.json` in XXX
    npm 搜索
    查看android 中sqlite数据库的表,发现没有表结构和数据问题
    Another Intro for Cookies
    TypeScript Crash Course: Property Access Modifiers
  • 原文地址:https://www.cnblogs.com/micua/p/3502722.html
Copyright © 2011-2022 走看看