是否可以操纵页面上控件的html输出?

时间:2013-09-20 09:50:36

标签: c# html asp.net string user-controls

我在一个页面上有一个控件,可以执行它需要做什么来计算它将呈现的HTML。

我想在页面上呈现之前操纵它。

我尝试过什么

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

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

1 个答案:

答案 0 :(得分:2)

  1. 如果您尝试覆盖现有控件的行为,可以Control adapter

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

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

  2. 如果你可以控制控件的来源,你可以简单地覆盖各种RenderX方法......

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

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