我有一个页面上有一堆用户控件。我希望能够直接在我的代码中替换的内容中包含“宏”或“占位符”。这应该不重要,但我使用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);
}
是的,这是正确的地方,但有可能(和明智的)做重置和读取流? – 2009-10-16 19:51:21
你从来没有“重置”流,因为它还没有发送。我不确定是否明智,不,我只是回答了这个问题lol – JustLoren 2009-10-16 19:53:59
我现在正在使用这种方法,但会等待接受答案,看看是否有更好的解决方案。基本上我... 让页面写入临时缓冲区。 修改缓冲区。 用修改的替换原始缓冲区。 – 2009-10-16 20:22:00