首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法修改Controls集合,因为该控件包含代码块(即<% ... %>)

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

Stack Overflow用户
提问于 2011-02-15 01:36:29
回答 7查看 102.7K关注 0票数 62

我试图在C#中创建动态元标签,但它给出了以下错误:

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

这是我添加的代码:

代码语言:javascript
复制
HtmlMeta meta = new HtmlMeta();
meta.Name = "keywords";
meta.Content = "book,paper";
Page.Header.Controls.Add(meta);

非常感谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-02-15 02:06:09

很难确定,因为您没有包含太多细节,但我认为发生的情况是在您的Page.Header中有<% ... %>代码块(它引用<head runat="server"> -可能在母版页中)。因此,当您尝试将项添加到该控件的Controls集合时,会在此问题的标题中看到错误信息。

如果我是对的,那么解决方法是在<% ... %>代码块周围包装一个<asp:placeholder runat="server">标记。这使代码块成为占位符控件的子级,而不是Page.Header控件的直接子级,但它根本不会更改呈现的输出。既然代码块不是Page.Header的直接子代,您就可以将内容添加到头的controls集合中而不会出错。

同样,在某个地方有一个代码块,否则您不会看到这个错误。如果它不在aspx页面中,那么我首先要查看的是aspx顶部的MasterPageFile属性所引用的文件。

票数 184
EN

Stack Overflow用户

发布于 2012-05-08 15:04:04

以防万一,如果你正在使用Telerik组件,并且你的javascript中有一个<%=的引用……%>然后用RadScriptBlock包装脚本标记。

代码语言:javascript
复制
 <telerik:RadScriptBlock ID="radSript1" runat="server">
   <script type="text/javascript">
        //Your javascript
   </script>
</telerik>

致敬??

票数 19
EN

Stack Overflow用户

发布于 2013-02-05 05:15:35

请访问"The Controls collection cannot be modified because the control contains code blocks"查看解决方案

accepted solution on the other question适用于我--将<%=的实例更改为<%#,它将代码块从Response.Write转换为求值块,这不受相同限制的限制。

在这种情况下,就像accepted solution here建议的那样,您应该将控件添加到母版页ContentPlaceHolder元素之外的其他元素中,即建议的asp:Placeholder控件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4995274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档