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);
    }
  • 相关阅读:
    cpp 二进制文件读写
    中文词频统计
    文件方式实现完整的英文词频统计实例
    组合数据类型练习,英文词频统计实例上
    英文词频统计预备,组合数据类型练习
    凯撒密码、GDP格式化输出、99乘法表
    字符串基本操作
    条件、循环、函数定义 练习
    turtle库基础练习
    Python基础练习
  • 原文地址:https://www.cnblogs.com/dudu/p/literal-does-not-allow-child-controls.html
Copyright © 2011-2022 走看看