1

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

我如何才能访问该页面以及如何找到元素来更改其值、文本?

4

3 回答 3

1

您可以通过使用HttpModule来做到这一点。这位于管道中,可以进行预处理和后处理。

例如看看这个whitespaceremover

于 2010-09-12T09:39:21.390 回答
1

除了 HttpModules,您还可以覆盖“Render”方法(或在基本页面中执行此操作以使其可重用)。

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);
} 
于 2010-09-12T09:42:15.677 回答
1

有许多选项,您将在很大程度上取决于实际目标是什么。

  1. 处理 Page 的 PreRender 事件并在此事件中调整您想要的任何元素。理想情况下,您会将其放在一个基类中,该基类由需要此处理的所有页面继承。这使您可以访问实际的页面模型和控制树。
  2. 设置一个过滤器,让您可以直接访问响应流。您可以通过 2 种方式实现这一点,或者作为安装过滤器的单独 HttpModule,或者您可以直接从 Global.asax 安装过滤器。您选择哪种路由取决于您需要的可重用程度,HttpModule 是最可重用的。

这是一篇不错的文章使用过滤器修改 HTTP 响应

于 2010-09-12T09:43:08.870 回答