“控件集合无法修改,因为控件包含代码块”

Posted

技术标签:

【中文标题】“控件集合无法修改,因为控件包含代码块”【英文标题】:“The Controls collection cannot be modified because the control contains code blocks” 【发布时间】:2016-05-24 12:01:30 【问题描述】:

在尝试使用以下代码块在我的页面中插入控件时,我遇到了这个异常

无法修改 Controls 集合,因为该控件 包含代码块

Literal lite=new Literal();
lite.Text = @"<div class='cookieLaw_slidesharey'><a id='cookieLaw_slideshare' href='#'><img src='/img/content/cookielaw_slideshare.jpg'/></a></div>";
Control control = this.FindControl("PlaceHolder");
control.Controls.AddAt(0,lite);

我尝试遵循此线程中的建议:

"The Controls collection cannot be modified because the control contains code blocks"

基本上是:

&lt;%= %&gt; 替换为&lt;%# %&gt;

并添加

Page.Header.Databind()在页面加载

但我得到以下异常:

对象引用未设置为对象的实例。

感谢您的帮助。

PS:我使用的是 .NET 3.5

【问题讨论】:

【参考方案1】:

检查您的“PlaceHolder”是否具有runat=server 属性。那应该已经有帮助了。您可以通过它的 id 来处理该控件,而不是使用 FindControl。

Page.Header.Databind() 不起作用的原因可能是因为您没有像您复制的示例中那样带有 runat=server 的 head 部分。他们在那里的标题中添加了控件,这可能会略有不同。

【讨论】:

将 runat 服务器添加到标头解决了问题,但我在 之间的所有 C# 变量都不再被识别... 刚刚发现我的错误。整个页面只有一个占位符。我试图在 Head 中添加一个,在 body 中添加一个,它突然起作用了

以上是关于“控件集合无法修改,因为控件包含代码块”的主要内容,如果未能解决你的问题,请参考以下文章

控件集合无法修改,因为控件包含代码块(即 <% ... %>)

控件集合无法修改,因为控件包含代码块(即 <% ... %>)

asp.net c# javascript 控件集合无法修改,因为控件包含代码块(即<% ... %>)

Scala 的不变性是不是意味着无法修改列表或无法修改列表及其内容?

win10密码无法修改。

linux中这个目录centos-root无法访问,但是修改权限也无法修改,怎么回事?