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

Posted

技术标签:

【中文标题】控件集合无法修改,因为控件包含代码块(即 <% ... %>)【英文标题】:The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>) 【发布时间】:2010-05-13 09:14:00 【问题描述】:

我正在尝试添加一个 CSS 表单代码。我的网站使用母版页。我收到错误无法修改控件集合,因为控件包含代码块(即 )。

我的代码片段

string CssClass = string.Format("0/1?$BUILD$", BaseImageUrl, CssFileName);

htmlLink css = new HtmlLink();
            css.Href = CssClass;
            css.Attributes["rel"] = "stylesheet";
            css.Attributes["type"] = "text/css";
            Header.Controls.Add(css);

有什么建议吗?

【问题讨论】:

【参考方案1】:

您不能修改head标签的Controls集合,因为header中的代码包含代码块。所以,你有两个选择:

去掉头部的代码块,把数据从后面的代码放到头部。

在 head 标签内放置一个容器(例如 PlaceHolder),并将链接添加到容器的 Controls 集合中。

【讨论】:

【参考方案2】:

该错误是因为尚未呈现控件,而正在执行 javascript 代码。

我刚刚将 javascript 移到页面底部。

【讨论】:

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

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

无法修改 Controls 集合,因为控件包含代码块(即 <% ... %> ),动态添加具有 Masterpages 的控件

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

在服务器端控件中使用 <%= %> 会导致无法修改 Controls 集合,因为控件包含代码块(即 <% ... %>)

无法修改 Controls 集合,因为该控件包含代码块(即 <% ... %>)。Telerik.Web.UI.RadAjaxControl.MoveUpdatePanel

无法修改 Controls 集合,因为该控件包含代码块(即 <% ...%>)ajax 工具包 html 编辑器