C# 什么原因导致“控件集合无法修改,因为控件包含代码块”?

C# 什么原因导致“控件集合无法修改,因为控件包含代码块”?,c#,asp.net,master-pages,C#,Asp.net,Master Pages,我最近在母版页中添加了一些代码块。注意,我已经读过关于将东西移出或使用的修复程序,但它们都不适用于我的应用程序 奇怪的是,我只在我的一页上看到这个错误。所有其他页面似乎都工作正常,那么究竟是什么导致了这个错误呢?我想不出这一页有什么独特之处。它和其他工作页面一样使用脚本管理器,这个页面没有什么特别之处。它确实有相当多的自定义控件,因此查找此页面中的不同点比通常更困难 那么,究竟是什么原因导致控件集合无法修改,因为该控件包含异常代码块 如果您有一个包含控件集合的页面或控件,并且曾经动态更新过该控件

我最近在母版页中添加了一些代码块。注意,我已经读过关于将东西移出或使用的修复程序,但它们都不适用于我的应用程序

奇怪的是,我只在我的一页上看到这个错误。所有其他页面似乎都工作正常,那么究竟是什么导致了这个错误呢?我想不出这一页有什么独特之处。它和其他工作页面一样使用脚本管理器,这个页面没有什么特别之处。它确实有相当多的自定义控件,因此查找此页面中的不同点比通常更困难


那么,究竟是什么原因导致控件集合无法修改,因为该控件包含异常代码块

如果您有一个包含控件集合的页面或控件,并且曾经动态更新过该控件集合,则向该页面添加一个未在.aspx/.ascx中定义的控件,此错误将触发。为了解决这个问题,我使用了注入数据,而不是

,如果您有一个包含控件集合的页面或控件,并且曾经动态更新过该控件集合,请向该页面添加一个未在.aspx/.ascx中定义的控件。此错误将触发。为了解决这个问题,我使用了注入数据的方法,而不是

当一些代码试图向包含或代码块的标记中添加控件时,可能会出现问题,在本例中是您的标记

例如,当您使用主题时,Page类将自动为主题目录中的每个CSS文件添加标记。但它也可以通过设置Page.Title来触发


但是有更多的方法可以引起对标记的修改,因此如果没有stacktrace之类的进一步信息,就很难给出明确的答案。

当一些代码试图向包含或代码块的标记添加控件时(在本例中为您的标记),可能会出错

例如,当您使用主题时,Page类将自动为主题目录中的每个CSS文件添加标记。但它也可以通过设置Page.Title来触发


但是还有很多方法可以修改标签,因此,如果没有stacktrace之类的进一步信息,就很难给出明确的答案。

如果启用了主题,它可能会导致它这样做。

如果启用了主题,它可能会导致它这样做。

我想出了一个更简单、更直接的方法,同时将标记保留在标题中属于


首先,用开始代码块,我发现有些东西更简单、更直接,同时将标记保留在它所属的标题中


首先,以自定义控件是否包含内容开始代码块,如果是,是否将自定义控件动态添加到页面?您还提到将代码移出;你的问题代码块到底在哪里?我不知道。我添加了一个代码块,就像母版页一样简单,但是现在这个页面不起作用了@Cory在代码块内部您想做什么?这样我们可以帮助您实现更好的approach@Pete我现在只想在这里发表评论。但是如果我删除了代码块,它就会工作。是的……我的意思是,如果不a删除或b查找控件集合中某个地方存在的控件(该控件正在被动态添加或删除),您将无法修复此异常。但是,如果我们知道您想对代码块做什么,我们可以为您提供其他建议:您的自定义控件是否包含内部内容,如果是,您是否将自定义控件动态添加到页面?您还提到将代码移出;你的问题代码块到底在哪里?我不知道。我添加了一个代码块,就像母版页一样简单,但是现在这个页面不起作用了@Cory在代码块内部您想做什么?这样我们可以帮助您实现更好的approach@Pete我现在只想在这里发表评论。但是如果我删除了代码块,它就会工作。是的……我的意思是,如果不a删除或b查找控件集合中某个地方存在的控件(该控件正在被动态添加或删除),您将无法修复此异常。但是,如果我们知道您想对代码块做什么,我们可以为您提供其他建议:我的其他页面可以这样做,但没有问题。如果您的其他页面没有动态添加的控件,那么它们就不会有问题-而且,您可能无法控制动态控件,这取决于您使用的UI框架/帮助程序。您还可以使用占位符控件或任何数量的其他控件。如果是UserControls引起了问题,我通常会在服务器端呈现它们,并将它们的HTML注入页面中,因为大多数
我所做的是支持AJAX的交互性等等。我使用的是常规的ASP.NETWebForms,我的意思是我有一些控件。添加。。。在其他页面中,它可以工作。我正在试图弄清楚为什么这些页面可以工作,而我的另一个页面却不能这样做,而且没有问题。如果你的其他页面没有动态添加控件,那么它们就不会有问题-而且,您可能无法控制动态控件,这取决于您使用的UI框架/帮助程序。您还可以使用占位符控件或任何数量的其他控件。如果是用户控件导致了问题,我通常会在服务器端呈现它们,并将它们的HTML注入页面,因为我所做的大部分工作都是支持AJAX的交互等等。我使用的是常规ASP.Net WebForms,我的意思是我有控件。添加。。。在其他页面中,它可以工作。我想弄明白为什么那些页面有效,而我的另一个页面无效。这救了我的命。谢谢,这救了我的命
<head id="head1" runat="server">
   <title>My Page</title>
   <link href="css/common.css" rel="stylesheet" type="text/css" />
   <script type="text/javascript" src="<%# ResolveUrl("~/javascript/leesUtils.js") %>"></script>
</head>
protected void Page_Load(object sender, EventArgs e)
   {
      Page.Header.DataBind();    
   }