До Response я использовал HttpModule для изменения файлов cookie. Сегодня я столкнулся с тем, что Asp.net взял на себя инициативу и преобразовал китайские иероглифы ꪻ, над преобразованием которых я так усердно работал, не говоря уже о веб-элементах управления Asp.net. Даже элемент управления Html. Ranat=server будет принудительно преобразован в китайские иероглифы для вывода.
Если вы записываете содержимое страницы построчно с помощью Response, это будет слишком утомительно и подвержено ошибкам. Поэтому лучший способ — выполнить еще одно преобразование после завершения действия генерации Asp.net, чтобы Asp.net не имел к вам никакого отношения.
Все действия по генерации Asp.net выполняются в методе Render, поэтому операции будем выполнять над методом Render:
защищенное переопределение void Render (писатель HtmlTextWriter)
{
StringWriter sw = новый StringWriter();
HtmlTextWriter htmlw = новый HtmlTextWriter (sw);
//Удаляем сгенерированный контент страницы
base.Render(htmlw);
htmlw.Flush();
htmlw.Закрыть();
строка pageContent = sw.ToString();
//Изменяем содержимое
pageContent = KillTheBugAndShit(pageContent);
Response.Write(pageContent);
//base.Render (писатель);
}
Используя этот метод, вы также можете извлечь контент, сгенерированный страницей, и создать статическую страницу для использования.
(Кажется, я написал пост такого содержания в прошлом году... не помню)