Можно ли манипулировать выводом html элемента управления на страницу?

0

У меня есть контроль над страницей, которая делает то, что нужно сделать, чтобы определить, какой html он отобразит.

Я хочу манипулировать этой строкой прямо перед ее отображением на странице.

Что я пробовал

Я предполагаю, что это необходимо сделать в событии Render страницы. Поэтому я переопределил это, и я пытаюсь использовать RenderControl. Но я не знаю, куда идти отсюда.

Я также попробовал обматывать литеральные теги вокруг этого элемента управления на стороне сервера (что, очевидно, не позволяет), чтобы получить доступ к свойству Text в литерале.

Теги:
string
user-controls

1 ответ

2
Лучший ответ
  1. Если вы пытаетесь переопределить поведение существующего элемента управления, вы можете использовать адаптер управления.

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

    В вашем случае вы можете использовать собственный метод рендеринга элемента управления для визуализации в StringWriter, обработать искомую строку и записать строку в вывод.

  2. Если у вас есть контроль над источником элемента управления, вы можете просто перезаписать различные методы 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);
}
  • 0
    Большое спасибо за ваш ответ, Стив. Я думаю, что я пытаюсь продолжить 2-ю половину вашего первого предложения. +1.
  • 0
    Теперь мне удалось успешно извлечь html с помощью StringWriter. Как мне теперь «внедрить» это обратно на страницу вместо исходного html?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню