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

时间:2016-05-24 12:01:30

标签: asp.net webforms

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

  

由于控件无法修改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 个答案:

答案 0 :(得分:1)

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

您的Page.Header.Databind()无法正常工作的原因可能是因为您没有像runat = server那样的头部分,就像您复制的示例一样。他们在标题中添加了控件,这些控件可能略有不同。