1

我想在我的网页中添加一个 ajax:TabContainer。我没有收到任何构建错误,但是当我尝试浏览到该页面时,它给了我错误:“无法修改 Controls 集合,因为控件包含代码块(即 <% ... %>)。” .

我为示例站点重新下载了 Ajax Control Toolkit,在 VS 中打开了解决方案,为 TabContainer 运行了示例,它运行良好。我认为这可能是 Ajax Control Toolkit 的不同版本——但不是。两个站点引用的 AjaxControlToolkit.dll 文件是相同的。为什么我不能让 TabContainer 在我的网站上工作?

还有一个问题,但我不知道它是否相关。我最近刚刚安装了 Visual Studio 2008。打开我的网站后,VS 自动在工具箱中创建了“AJAX 控件”选项卡,并在其中填充了所有 ajax 控件。在源代码中,所有控件都以“ajax”为前缀——即“< ajax:TabContainer runat="server" ... >”。

但是,当我打开示例网站时,Visual Studio 在工具箱中创建了另一个选项卡 - “AjaxControlToolkit 组件”,其中填充了与“AJAX 控件”中相同的所有控件。我不知道为什么它两次添加了相同的控件(但奇怪的是,工具箱中有不同的图标)。在源代码中,所有控件都以“ajaxToolkit”为前缀——即“< ajaxToolkit:TabContainer runat="server" ... >”。这里发生了什么?我只想让该死的 TabContainer 在我的网站上工作。

4

6 回答 6

6

您不能在使用标准服务器呈现的控件内使用 <%= %> (write) 块 - 您会收到此错误。

为了让 ASP AJAX 组件正常工作,您需要:

<head runat="server">...

否则它也会因此错误而崩溃。

但是,您可以在这些服务器控件中进行数据绑定:

<head runat="server">
    <link rel="stylesheet" type="text/css" 
        href="<%# ResolveUrl( "~/styles/common.aspx" ) %>" />
...

然后在您的页面加载中:

Page.Header.DataBind();

发生错误的原因是 ASP WebForms 将控件呈现为组件集合的方式 - 它们可以处理集合(并且期望数据绑定 <%#)或文字写入(并且期望 <%=),但不能同时处理两者。

永久避免此问题的最佳方法是切换到 ASP MVC。

于 2009-06-29T13:21:31.423 回答
2

此错误并非特定于 Ajax。

您可以尝试将您的 ajax:TabContainer 放在 asp:Panel 中。或者,从您的页面中删除 <% ...%> 代码块。

于 2008-12-10T18:57:29.750 回答
1

我想通了!

如果您在<head>包含<script>标签时尝试使用 AJAX 控件,则会收到此错误消息。

我刚刚将 JavaScript 移到正文中,现在它似乎工作正常。

于 2008-12-10T20:57:14.457 回答
1

嘿,伙计们,这不仅是 javascript 标记,还包括页面头部标记中使用 <%= %> 或 <% Response.Write %> 的任何内容。更改代码以使用数据绑定指令 <%# eval( some code ) %> 或将内容移至正文(这对于加快页面的加载时间也很有用)。

于 2010-10-25T08:58:02.990 回答
0

Pragnesh,检查任何 javascript 的 HEAD 标记。我有一些带有 <%%> 代码块的 javascript,这些代码块阻止了 AJAX 选项卡控件的工作。

于 2010-02-04T15:43:03.030 回答
-1

无需做任何事情,只需保留 <%=....%> 母版页中的部分代码

于 2013-03-25T11:19:31.423 回答