我试图在C#中创建动态元标签,但它给出了以下错误:
无法修改Controls集合,因为该控件包含代码块(即<% ... %>)
这是我添加的代码:
HtmlMeta meta = new HtmlMeta();
meta.Name = "keywords";
meta.Content = "book,paper";
Page.Header.Controls.Add(meta);
非常感谢。
发布于 2011-02-15 02:06:09
很难确定,因为您没有包含太多细节,但我认为发生的情况是在您的Page.Header
中有<% ... %>
代码块(它引用<head runat="server">
-可能在母版页中)。因此,当您尝试将项添加到该控件的Controls集合时,会在此问题的标题中看到错误信息。
如果我是对的,那么解决方法是在<% ... %>
代码块周围包装一个<asp:placeholder runat="server">
标记。这使代码块成为占位符控件的子级,而不是Page.Header
控件的直接子级,但它根本不会更改呈现的输出。既然代码块不是Page.Header
的直接子代,您就可以将内容添加到头的controls集合中而不会出错。
同样,在某个地方有一个代码块,否则您不会看到这个错误。如果它不在aspx页面中,那么我首先要查看的是aspx顶部的MasterPageFile
属性所引用的文件。
发布于 2012-05-08 15:04:04
以防万一,如果你正在使用Telerik组件,并且你的javascript中有一个<%=的引用……%>然后用RadScriptBlock包装脚本标记。
<telerik:RadScriptBlock ID="radSript1" runat="server">
<script type="text/javascript">
//Your javascript
</script>
</telerik>
致敬??
发布于 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
控件。
https://stackoverflow.com/questions/4995274
复制相似问题