У меня есть контроль над страницей, которая делает то, что нужно сделать, чтобы определить, какой html он отобразит.
Я хочу манипулировать этой строкой прямо перед ее отображением на странице.
Что я пробовал
Я предполагаю, что это необходимо сделать в событии Render страницы. Поэтому я переопределил это, и я пытаюсь использовать RenderControl. Но я не знаю, куда идти отсюда.
Я также попробовал обматывать литеральные теги вокруг этого элемента управления на стороне сервера (что, очевидно, не позволяет), чтобы получить доступ к свойству Text в литерале.
Если вы пытаетесь переопределить поведение существующего элемента управления, вы можете использовать адаптер управления.
В основном вы переопределяете собственный рендер любого элемента управления, используя эту технику.
В вашем случае вы можете использовать собственный метод рендеринга элемента управления для визуализации в StringWriter
, обработать искомую строку и записать строку в вывод.
Если у вас есть контроль над источником элемента управления, вы можете просто перезаписать различные методы RenderX...
[Edit] Какой-то пример кода (из памяти, не уверен в синтаксисе)
public override void Render(HtmlTextWriter writer){
var sb = new StringBuilder();
using(var sw = new StringWriter(sb)){
this.RenderControl(sw);
}
var htmlResult = sb.ToString();
var patchedHtml = DoSomething(htmlResult);
writer.Writer(patchedHtml);
}