2010-09-12 1 views
1

Я хочу изменить текст некоторых элементов, когда страница покидает сервер (page_render, endRequest и т. Д.).Как я могу манипулировать страницей во время рендеринга?

Как я могу получить доступ к странице и как я могу найти элементы для изменения их значений, текстов?

ответ

1

Вы можете сделать это, используя HttpModule. Это сидит в трубопроводе и может выполнять предварительную и постобработку.

Например, взгляните на это whitespaceremover.

+1

Для других находящих это: хотя это действительный пример * пожалуйста * на самом деле не использовать связанный модуль ... это приносит больше вреда, чем пользы, и сохраняет * очень * небольшая полоса пропускания, так как вы * должны * доставлять страницы gzipped в любом случае :) –

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); 
} 
1

Существует несколько вариантов, и в каждом из них вы будете в значительной степени зависеть от того, что представляет собой настоящая цель.

  1. Обращайтесь к событию PreRender страницы и настройте любые элементы, которые вы хотите в этом случае. В идеале вы ставите это в базовый класс, который наследуется всеми страницами, требующими этой обработки. Это дает вам доступ к фактической модели страницы и дереву управления.
  2. Установите фильтр, который даст вам прямой доступ к потоку ответов. Вы можете реализовать это двумя способами, либо в виде отдельного HttpModule, который устанавливает фильтр, либо вы можете установить фильтр непосредственно из Global.asax. Какой маршрут вы выбираете, зависит от того, как многократно использовать его, при этом HttpModule является самым многоразовым.

Вот хорошая статья Modifying the HTTP Response Using Filters