【问题标题】:Only Content controls are allowed directly in a content page that contains Content controls in ASP.NET仅允许直接在包含 ASP.NET 中的内容控件的内容页中使用内容控件
【发布时间】:2013-02-14 05:50:31
【问题描述】:

我有一个包含母版页和子页的应用程序。我的应用程序在本地主机(在我的 Intranet 上)上运行良好。但是,一旦我将它放在互联网上的服务器上,单击任何菜单后都会出现如下所示的错误。

仅允许直接在包含内容控件的内容页面中使用内容控件。

【问题讨论】:

  • 你可以试着去掉那个空间...也许有多余的空间被当作字面量处理
  • 嗨,我检查了这个。但是由于它在本地主机上工作,因此在寻找解决方案时遇到了一些问题。

标签: asp.net master-pages


【解决方案1】:

在您的子页面中仔细检查您的开始和结束内容标签。

确认他们

  • 存在
  • 拼写正确
  • 有身份证
  • 有 runat="server"
  • 拥有正确的 ContentPlaceHolderID

【讨论】:

    【解决方案2】:

    我遇到了完全相同的问题。问题是我在结束内容标记之后有 一些空格

    </asp:Content>
    

    删除最后一个结束标记后的所有空格、换行符。

    【讨论】:

    • 这是摆脱网络表单的重要原因
    • 这是我的错误原因,我有一个额外的空间。
    【解决方案3】:

    我遇到了类似的问题。您是否使用“内容”标签围绕您的代码?

    <asp:Content>Add your HTML here</asp:Content> 
    

    并为您的部分设置单独的内容标签。 标题声明的标题内容和正文声明的正文内容。

    【讨论】:

    • 是的,我有单独的头部和身体内容。我的代码也在内容占位符内。它仍然给出同样的错误。
    【解决方案4】:

    另一种可能性是行尾。我从源代码管理中复制了一个旧版本的代码,它强制执行 Unix 样式的行结尾。由于它不是结帐,它不会自动将行尾转换为 DOS/Windows 样式。错误消息是“仅允许直接使用内容控件...”错误,即使页面布局正确。似乎缺少 Windows 样式的换行符导致 ASPX 解析器失败。

    我能够通过将代码粘贴到一个行尾不可知的编辑器中来修复它(这导致行尾被规范化为 Windows 样式),然后将其重新复制到剪贴板并将其粘贴回 Visual Studio,之后页面处理没有错误。

    在 Tripati Subudhi 在问题中提出的案例中,完全有可能是关于部署过程的某些东西无意中将行尾转换为 Unix 样式,从而导致错误。

    【讨论】:

    • 这是我的问题。我使用的是 Visual Studio,所以我只选择了所有要评论然后取消评论。这为我解决了问题。
    【解决方案5】:

    另一个可能的问题是 HTML cmets,我在 Content 控件周围有这些 - 我相信 ASP.NET 在幕后将这些转换为文字控件 - 因此出现错误 i

    【讨论】:

      【解决方案6】:

      此错误的另一个潜在原因:标签的大小写错误。

      &lt;asp:content&gt;... 更改为&lt;asp:Content&gt;... 解决了我的问题。

      错误案例的原因是Visual Studio 2012(和2013)中内置的格式文档功能,默认设置。 可以在 Tools->Options->Text Editor->HTML (Web Forms)->Formatting 中更改此设置:将标签大小写设置为“as entered”,工作室将不再破坏您的文件。

      【讨论】:

        【解决方案7】:

        对我来说,我不喜欢我有一个程序集和一个页面指令被注释掉:

        <%--<%@ Assembly Name="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" %>--%>
        <%--<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Inherits="MyClass.MyPage" MasterPageFile="~/_layouts/MyProject/MasterPages/MasterPage.master" %>-->
        

        即使在那之后我有一个有效的 Page 指令,并且没有使用 System.Core 做任何事情。删除它们后,它加载正常。

        【讨论】:

          【解决方案8】:

          对我来说,这是两个具有相同 ID 的内容控件 - 该文件已在 Visual Studio 之外进行了编辑,因此不会发生重复 ID 的自动重命名。这个误导性错误是突出显示第二个内容控件中的第一个图像,其 ID 与第一个图像相同 - 真是胡思乱想!

          复制整个页面并将其重新发布到自身上解决了它,因为此时 VS 重命名了重复的控件 ID。

          【讨论】:

            【解决方案9】:

            检查您的文档是否有非打印字符

            我的母版页在文件开头包含两个 UTF-8 BOM,因为我从另一个页面粘贴了&lt;%@ Master %&gt; 指令。我能够通过将它们退格来使其工作。

            【讨论】:

            • 在 bitbucket 中编辑直接给我们造成了这个问题。删除内容并重新输入即可解决问题。
            【解决方案10】:

            在我的例子中,我忘记添加 AjaxControlToolkit.dll 的程序集引用。

            当我添加引用时,错误消失了。

            【讨论】:

              【解决方案11】:

              在 SharePoint 中发生这种情况是因为没有发布 pageLayout。

              【讨论】:

                【解决方案12】:

                我一直忽略了一个愚蠢的语法错误。在我的MasterType 标签的开头有一个额外的&lt;,我这辈子都看不到?‍♂️。

                <%@ Page Language="vb" AutoEventWireup="true" MasterPageFile="~/Site1.Master" CodeBehind="Default.aspx.vb" Inherits="SomeApp.Web._Default" %>
                
                <<%@ MasterType VirtualPath="~/Site1.Master" %>
                

                【讨论】:

                  猜你喜欢
                  • 2012-08-29
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-12-27
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多