我已经为这个错误苦苦挣扎了半天以上,但没有任何建议有帮助,包括 SOF 的 Getting error about control collection ...。我添加此内容是因为我很确定有人会将其标记为“重复”;事实并非如此。
我知道 Ajax AsyncFileUpload 是罪魁祸首,但我知道为什么。当我从页面中删除此控件时,错误就会消失。
我还尝试了所有有关将代码块包装在占位符标记内的建议,但无济于事。此外,所有其他页面都工作正常,这意味着母版页不会出现问题,否则所有页面都会出现问题(我认为!)。
我尝试过:
在主页中:
<asp:PlaceHolder runat="server>
<script src='<%# ResolveUrl("path_to_script:) %>'
...
</asp:PlaceHolder>
<link rel="stylesheet" href="~/assets/css/whatever.css" />
页面显示此错误:
The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).
[HttpException (0x80004005): The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).]
System.Web.UI.ControlCollection.Add(Control child) +11686804
AjaxControlToolkit.ToolkitResourceManager.RegisterCssReferences(Control control) +893
System.Web.UI.Control.LoadRecursive() +90
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1602
导致此问题的控件是:
<ajaxToolkit:AsyncFileUpload runat="server" ID="fuDBData"
ClientIDMode="Static"
class="hidden"
ThrobberID="myThrobber"
UploaderStyle="Traditional"
OnUploadedComplete="fuDBData_UploadedComplete"
OnUploadedFileError="UploadedFileError"
onClientUploadStart="uploadStart"
OnClientUploadComplete="uploadComplete" />
在抓住救命稻草试图解决这个问题时,我对 site.master 文件进行了更改,似乎已经解决了这个问题。尽管如此,我仍然不明白,其他带有非 Ajax 控件的页面并没有像这个带有 Ajax AsyncFileUpload 的页面那样呕吐。
尽管如此,这个改变解决了我的问题;如果它能帮助一个人摆脱我所患的偏头痛,我会很高兴!
这就是我在 site.master 中的内容:
<head>
...
<script type="text/javascript">
//Access Code-Behind Data in Javascript
var Role = "<%#User_Role%>";
var UserName = "<%#User_Name%>";
var validRoles = "<%#ValidRoles%>";
...
</script>
</head>
这是我将其更改为:
<head>
...
</head>
<body>
<script type="text/javascript">
//Access Code-Behind Data in Javascript
var Role = "<%#User_Role%>";
var UserName = "<%#User_Name%>";
var validRoles = "<%#ValidRoles%>";
...
</script>
<form id="Form1" runat="server">
...
</form>
</body>