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);
    }
  • 相关阅读:
    Q:简单实现URL只能页面跳转,禁止直接访问
    Q:elementUI中tree组件动态展开
    一个切图仔的 JS 笔记
    一个切图仔的HTML笔记
    一个切图仔的 CSS 笔记
    GnuPG使用笔记
    SQL Svr 2012 Enterprise/Always-on节点连接超时导致节点重启——case分享
    网卡配置文件备份在原目录下引起网络配置异常
    python培训
    service脚本的写法
  • 原文地址:https://www.cnblogs.com/dudu/p/literal-does-not-allow-child-controls.html
Copyright © 2011-2022 走看看