使用 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>

【问题讨论】:

看起来您在发布的代码中缺少&lt;/asp:Content&gt; 标签。您的实际代码中是否也缺少这一点? @DanielZiga 不,它在我的代码中,只是在复制/粘贴中错过了它。 【参考方案1】:

去吃晚饭回来后,我又开始用谷歌搜索,在http://forums.asp.net/t/1172295.aspx/1找到了一个非常真实的帖子

在测试中,我在我的母版页上捆绑了导致问题的样式。我只需要在我的标签中用 PlaceHolder 标签包装 style.render 标签。完成后,一切正常。

【讨论】:

很有趣,我遇到了类似的问题,这个解决方案给了我解决问题的线索。长话短说:我不得不用 包装我的 other 内容

以上是关于使用 AJAXToolKit 日历扩展器时无法修改有关控件集合的错误的主要内容,如果未能解决你的问题,请参考以下文章

php [WooCommerce预订]在前端未使用日历选择器时更改日期格式

制作谷歌日历插件

带有 AjaxToolkit 的 Accordion 控件的 Sharepoint WebPart

asp.net ajaxtoolkit 自动完成功能不起作用

模态扩展日历

日期范围选择器 - 日历标题本地化格式