У меня есть страница, на которой есть куча пользовательских элементов управления. Я хочу иметь «макросы» или «заполнители» непосредственно в содержимом, которое будет заменено в моем коде. Это не имеет большого значения, но я использую Ektron как свою CMS.Как изменить содержимое всей страницы ASP.NET прямо перед ее выходом?
Есть ли какие-либо события на странице, которые я могу подключить, чтобы заменить строку на весь отображаемый контент страницы прямо перед отправкой клиенту?
UPDATE
Вот код, который я в настоящее время используют для достижения этой цели:
protected override void Render(HtmlTextWriter writer)
{
string content = string.Empty;
using (var stringWriter = new StringWriter())
using (var htmlWriter = new HtmlTextWriter(stringWriter))
{
// render the current page content to our temp writer
base.Render(htmlWriter);
htmlWriter.Close();
// get the content
content = stringWriter.ToString();
}
// replace our placeholders
string newContent = content.Replace("$placeholder1$", "placeholder1 data").Replace("$placeholder2$", "placeholder2 data");
// write the new html to the page
writer.Write(newContent);
}
Да, это подходящее место, но возможно ли (и разумно) сбросить и прочитать поток? –
вы никогда не «перезагружаете» поток, так как он еще не отправлен. Я не уверен, что его мудрый, нет, я просто ответил на вопрос lol – JustLoren
Я использую этот метод прямо сейчас, но буду ждать, чтобы принять ответ, чтобы увидеть, есть ли лучшее решение. В основном я ... Позвольте странице писать во временный буфер. Измените буфер. Замените исходный буфер на измененный. –