如何在渲染页面时操纵页面?

时间:2010-09-12 09:31:23

标签: asp.net webpage-rendering

我想在页面离开服务器时更改一些元素文本(page_render,endRequest等)。

我如何才能访问该页面?如何找到更改其值,文本的元素?

3 个答案:

答案 0 :(得分:1)

您可以使用HttpModule来完成此操作。它位于管道中,可以进行预处理和后处理。

例如,请查看此whitespaceremover

答案 1 :(得分:1)

除了HttpModules之外,您还可以覆盖“渲染”方法(或在基页中执行此操作以使其可重复使用)。

protected override void Render(HtmlTextWriter writer )
{
    StringWriter stringWriter = new StringWriter();
    HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);

    base.Render(htmlWriter);

    string html = stringWriter.ToString();

    // do stuff with the html

    writer.Write(html);
} 

答案 2 :(得分:1)

有许多选项,其中一个套件将主要取决于实际目标。

  1. 处理Page的PreRender事件并调整此事件中您想要的任何元素。理想情况下,您可以将其放在由需要此处理的所有页面继承的基类中。这使您可以访问实际的页面模型和控制树。
  2. 设置一个过滤器,使您可以直接访问响应流。您可以通过两种方式实现此功能,既可以作为安装过滤器的单独HttpModule,也可以直接从Global.asax安装过滤器。您选择哪条路线取决于您需要的可重用性,HttpModule是最可重复使用的。
  3. 这是一篇很好的文章Modifying the HTTP Response Using Filters