Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法修改控件集合,因为该控件包含代码块(即<;%…%>;)_C# - Fatal编程技术网

C# 无法修改控件集合,因为该控件包含代码块(即<;%…%>;)

C# 无法修改控件集合,因为该控件包含代码块(即<;%…%>;),c#,C#,我试图在C#中创建动态元标记,但它给出了以下错误: 无法修改控件集合,因为控件 包含代码块(即) 这是我添加的代码: HtmlMeta meta = new HtmlMeta(); meta.Name = "keywords"; meta.Content = "book,paper"; Page.Header.Controls.Add(meta); 非常感谢。很难说清楚,因为您没有包括很多细节,但我认为发生的事情是,在您的页面中有代码块。页眉(它指的是,可能在母版页中)。因此,当您尝试将项目添

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

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

这是我添加的代码:

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);