首页 > 代码库 > “System.Web.UI.WebControls.Literal”不允许使用子控件
“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);}
“System.Web.UI.WebControls.Literal”不允许使用子控件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。