0

我在一个页面上有一个控件,它可以完成它需要做的事情来确定它将呈现什么 html。

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

我试过的

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

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

4

1 回答 1

2
  1. 如果您试图覆盖现有控件的行为,您可以使用Control 适配器

    基本上,您使用此技术覆盖任何控件的本机渲染。

    在您的情况下,您可以使用控件的本机渲染方法渲染到 a 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);
}
于 2013-09-20T09:54:41.243 回答