“控件集合无法修改,因为控件包含代码块”
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"
基本上是:
将<%= %>
替换为<%# %>
并添加
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 控件集合无法修改,因为控件包含代码块(即<% ... %>)