我在一个页面上有一个控件,可以执行它需要做什么来计算它将呈现的HTML。
我想在页面上呈现之前操纵它。
我尝试过什么
我假设需要在页面的Render事件上完成此操作。所以我已经覆盖了它,我正在尝试使用RenderControl。但我真的不知道从哪里开始。
我还尝试在这个服务器端控件周围包装文字标签(显然不允许),以便访问文字的Text属性。
答案 0 :(得分:2)
如果您尝试覆盖现有控件的行为,可以Control adapter。
基本上,您使用此技术覆盖任何控件的本机渲染。
在您的情况下,您可以使用控件的本机render方法呈现给StringWriter
,处理restulting字符串并将字符串写回输出。
如果你可以控制控件的来源,你可以简单地覆盖各种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);
}