zoukankan      html  css  js  c++  java
  • “System.Web.UI.WebControls.Literal”不允许使用子控件

    今天在写下面的代码时遭遇错误——“System.Web.UI.WebControls.Literal”不允许使用子控件('System.Web.UI.WebControls.Literal' does not allow child controls):

    var postBodyDiv = new HtmlGenericControl()
    {
        ID = "cnblogs_post_body",
        ClientIDMode = ClientIDMode.Static,
        TagName = "div",
        InnerHtml = body
    };
    
    var signatureDiv = new HtmlGenericControl()
    {
        ID = "signature",
        TagName = "div"
    };
    
    literalBody.Controls.Add(postBodyDiv);
    literalBody.Controls.Add(signatureDiv);

    literalBody的类型是System.Web.UI.WebControls.Literal。将postBodyDiv与signatureDiv作为子控件添加到literalBody中,是为了避免字符串拼接带来的内存消耗。

    之前字符串拼接的代码如下:

    literalBody.Text = "<div id="cnblogs_post_body">" + body + "</div><div id="signature"></div>";

    本来这不是问题,把类型由Literal改为Label就行了,但是实际场景不允许这么做,必须要用Literal。

    后来采取了在literalBody的父控件中动态添加postBodyDiv与signatureDiv的方法解决了问题,代码如下:

    var postBodyDiv = new HtmlGenericControl()
    {
        ID = "cnblogs_post_body",
        ClientIDMode = ClientIDMode.Static,
        TagName = "div",
        InnerHtml = body
    };
    
    var signatureDiv = new HtmlGenericControl()
    {
        ID = "signature",
        TagName = "div"
    };
    
    var bodyControlIndex = this.Controls.IndexOf(literalBody);
    if (bodyControlIndex >= 0)
    {
        Controls.AddAt(bodyControlIndex, postBodyDiv);
        Controls.AddAt(bodyControlIndex + 1, signatureDiv);
    }
  • 相关阅读:
    Oracle中job的使用详解
    Control File (二)重建CONTROLFILE --- NORESETLOG
    Oracle Analyze 命令 详解
    深入学习Oracle分区表及分区索引
    B树索引和位图索引的区别!
    RAID0_RAID1_RAID10_RAID5各需几块盘才可组建
    Oracle IO优化心得
    修改dbwr后台进程数量
    查看ORACLE执行计划的几种常用方法
    printf()格式化输出详解及echo带颜色输出
  • 原文地址:https://www.cnblogs.com/dudu/p/literal-does-not-allow-child-controls.html
Copyright © 2011-2022 走看看