C# 无法修改控件集合,因为该控件包含代码块(即<;%…%>;)
我试图在C#中创建动态元标记,但它给出了以下错误: 无法修改控件集合,因为控件 包含代码块(即) 这是我添加的代码:C# 无法修改控件集合,因为该控件包含代码块(即<;%…%>;),c#,C#,我试图在C#中创建动态元标记,但它给出了以下错误: 无法修改控件集合,因为控件 包含代码块(即) 这是我添加的代码: HtmlMeta meta = new HtmlMeta(); meta.Name = "keywords"; meta.Content = "book,paper"; Page.Header.Controls.Add(meta); 非常感谢。很难说清楚,因为您没有包括很多细节,但我认为发生的事情是,在您的页面中有代码块。页眉(它指的是,可能在母版页中)。因此,当您尝试将项目添
HtmlMeta meta = new HtmlMeta();
meta.Name = "keywords";
meta.Content = "book,paper";
Page.Header.Controls.Add(meta);
非常感谢。很难说清楚,因为您没有包括很多细节,但我认为发生的事情是,在您的
页面中有
代码块。页眉
(它指的是
,可能在母版页中)。因此,当您尝试将项目添加到该控件的控件集合时,会在该问题的标题中收到错误消息
如果我是对的,那么解决方法是在
代码块周围包装一个
标记。这使代码块成为占位符控件的子控件,而不是Page.Header
控件的直接子控件,但它根本不会更改呈现的输出。既然代码块不是Page.Header
的直接子级,您就可以将内容添加到Header的controls集合中而不会出错
同样,在某个地方有一个代码块,否则您不会看到这个错误。如果它不在您的aspx页面中,那么我将首先查看aspx顶部的
MasterPageFile
属性所引用的文件。以防万一,如果您使用的是Telerik组件,并且您的javascript中有一个引用,那么请使用RadScriptBlock包装您的脚本标记
<telerik:RadScriptBlock ID="radSript1" runat="server">
<script type="text/javascript">
//Your javascript
</script>
</telerik>
//你的javascript
关于Örvar请查看
的change实例对我起了作用,我遇到了同样的问题,我用这种方法解决了这个问题:
而不是将元添加到当前页眉,导致与您相同的错误:
Page.Header.Controls.Add(meta);
我用了这个:
Master.FindControl("YourHeadContentPlaceHolder").Controls.Add(meta);
它就像一种魅力。并不能真正解决你的问题,但它是一种重要的选择
如果要将自定义html添加到页面的开头(在
元素中),可以使用page.ClientScript.RegisterClientScriptBlock()
虽然该方法称为“script”,但您可以添加任意字符串,包括html。对于Ovar提到的使用Telerik的用户,请确保将javascript封装在
<telerik:RadScriptBlock ID="radSript1" runat="server">
<script type="text/javascript">
//Your javascript
</script>
</telerik>
//你的javascript
由于Telerik在查找元素时无法识别,并且如果javascript代码未包装,则会给您一个错误。在ContentPlaceholder中,放置placeholder控件。例如
<asp:Content ID="header" ContentPlaceHolderID="head" runat="server">
<asp:PlaceHolder ID="metatags" runat="server">
</asp:PlaceHolder>
</asp:Content>
你的.aspx标记中必须有脚本标记。你能显示你在代码中的位置吗?我有没有办法通过c添加代码?对于动态标记,这就是我的代码在aspx中的外观。谢谢。我用不同的占位符包装了我的css内容。我尝试了一些其他答案,这是唯一有效的答案我谢谢分享!帮我解决了,我应该给你买一杯啤酒(或九杯)。谢谢,今天帮我省去了一个大头疼。哇,谢谢。多年来,我在webforms中一直在努力解决这个问题,有大量的黑客解决方法。占位符工作得很好,它不像我的其他解决方案那么难看。这对我很有用。不知道为什么这是一个没有标签的问题。我们纯粹是通过代码构建页面的一部分,这最终成为了我们的问题以及解决方案(如果母版页中有标题占位符,请将其添加到标题占位符)。奇怪的是,这只是某些环境中的一个问题,而不是所有环境中的一个问题,因此可能在某些地方也是一个配置问题。不管怎样,这都奏效了。谢谢
HtmlMeta hm1 = new HtmlMeta();
hm1.Name = "Description";
hm1.Content = "Content here";
metatags.Controls.Add(hm1);