是否可以在页面上操作控件的 html 输出

本文关键字:控件 操作 html 输出 是否 | 更新日期: 2023-09-27 18:32:11

我在页面上有一个控件,它可以执行它需要执行的操作来计算它将呈现的html。

我想在页面上呈现之前操作此字符串。

我尝试过什么

我假设这需要在页面的 Render 事件上完成。所以我已经覆盖了它,我正在尝试使用 RenderControl。但我真的不知道该何去何从。

我还尝试将文本标记包装在这个服务器端控件周围(它显然不允许),以便访问文本的 Text 属性。

是否可以在页面上操作控件的 html 输出

  1. 如果尝试重写现有控件的行为,则可以使用控件适配器。

    基本上,您可以使用此技术覆盖任何控件的本机呈现。

    在这种情况下,您可以使用控件的本机 render 方法呈现到StringWriter,处理恢复字符串并将字符串写回输出。

  2. 如果您可以控制控件的源代码,则可以简单地覆盖各种 RenderX 方法...

[编辑] 某种示例代码(来自内存,不确定语法)

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);
}