使用 AJAXToolKit 日历扩展器时无法修改有关控件集合的错误
Posted
技术标签:
【中文标题】使用 AJAXToolKit 日历扩展器时无法修改有关控件集合的错误【英文标题】:Getting error about Controlls collection cannot be modified when using AJAXToolKit's calender extender 【发布时间】:2013-05-27 21:31:22 【问题描述】:我正在尝试从 AJAXTool 工具包中添加 CalenderExternder 功能。当我将控件添加到我的页面、构建和调试时,我收到以下错误:
无法修改 Controls 集合,因为该控件包含代码块(即 )。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Web.HttpException:无法修改 Controls 集合,因为该控件包含代码块(即 )。
来源错误: 在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。 堆栈跟踪: [HttpException (0x80004005):无法修改 Controls 集合,因为该控件包含代码块(即 )。] System.Web.UI.ControlCollection.Add(控制子)+9600379 AjaxControlToolkit.ScriptObjectBuilder.RegisterCssReferences(控制控件) +702 AjaxControlToolkit.ExtenderControlBase.OnLoad(EventArgs e) +62 System.Web.UI.Control.LoadRecursive() +54 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772
这是我的整个页面代码,只要我的代码中没有标签,它就可以正常工作。我已经在我的 web.config 文件中注册了工具包,并且母版页正在使用 ToolkitScriptManager
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/AdminLayout.Master" AutoEventWireup="true" CodeBehind="ManageReleaseInfo.aspx.cs" Inherits="FFInfo.Staff.Sections.ManageReleaseInfo" %>
<asp:Content ID="phContent" ContentPlaceHolderID="phContent" runat="server">
<h2 class="text-center">
<asp:Literal ID="lblTitle" runat="server" />
</h2>
<asp:Label ID="lblResults" CssClass="text-error" runat="server" />
<asp:ValidationSummary ID="vsErrorSummary" CssClass="text-error" DisplayMode="BulletList" HeaderText="The following errors have been found:" runat="server" />
<p>
What section is this for?
<asp:DropDownList ID="ddlSectionList" AppendDataBoundItems="true" runat="server">
<asp:ListItem Value="-1" Text="Select Section Title" />
</asp:DropDownList>
<br />Release Title:
<asp:TextBox ID="tbReleaseTitle" Columns="50" runat="server" />
<asp:RequiredFieldValidator ID="ReleaseTitleRequired" ControlToValidate="tbReleaseTitle" Display="Dynamic" CssClass="text-error" Text="*" ErrorMessage="Please there the release title." runat="server" />
<br />Platform:
<asp:DropDownList ID="ddlPlatform" AppendDataBoundItems="true" runat="server">
<asp:ListItem Value="-1" Text="Select Platform" />
</asp:DropDownList>
<br />Publisher:
<asp:DropDownList ID="ddlPublisher" AppendDataBoundItems="true" runat="server">
<asp:ListItem Value="-1" Text="Select Publisher" />
</asp:DropDownList>
<br />Release Location:
<asp:DropDownList ID="ddlLocation" AppendDataBoundItems="true" runat="server">
<asp:ListItem Value="-1" Text="Select Locaiton" />
</asp:DropDownList>
<br />Estimated Release Date:
<asp:DropDownList ID="ddlReleaseDate" AppendDataBoundItems="true" runat="server">
<asp:ListItem Value="-1" Text="Select Estimated Date" />
</asp:DropDownList>
<br />Exact Release Date:
<asp:TextBox ID="tbReleaseDate" AutoCompleteType="Disabled" runat="server" />
<asp:CalendarExtender ID="ceReleaseDate" TargetControlID="tbReleaseDate" runat="server" />
<asp:RegularExpressionValidator ID="ReleaseDateCheck" ControlToValidate="tbReleaseDate" ValidationExpression="^([0-9]1,2)[./-]+([0-9]1,2)[./-]+([0-9]2|[0-9]4)$" Display="None" ErrorMessage="Please enter a valid date in MM/DD/YYYY format please." runat="server" />
</p>
</asp:Content>
【问题讨论】:
看起来您在发布的代码中缺少</asp:Content>
标签。您的实际代码中是否也缺少这一点?
@DanielZiga 不,它在我的代码中,只是在复制/粘贴中错过了它。
【参考方案1】:
去吃晚饭回来后,我又开始用谷歌搜索,在http://forums.asp.net/t/1172295.aspx/1找到了一个非常真实的帖子
在测试中,我在我的母版页上捆绑了导致问题的样式。我只需要在我的标签中用 PlaceHolder 标签包装 style.render 标签。完成后,一切正常。
【讨论】:
很有趣,我遇到了类似的问题,这个解决方案给了我解决问题的线索。长话短说:我不得不用以上是关于使用 AJAXToolKit 日历扩展器时无法修改有关控件集合的错误的主要内容,如果未能解决你的问题,请参考以下文章
php [WooCommerce预订]在前端未使用日历选择器时更改日期格式
带有 AjaxToolkit 的 Accordion 控件的 Sharepoint WebPart