繁体   English   中英

只允许内容控件直接在包含ASP.NET中的内容控件的内容页面中

[英]Only Content controls are allowed directly in a content page that contains Content controls in ASP.NET

我有一个具有母版页和子页面的应用程序。 我的应用程序在本地主机上(在我的Intranet上)正常工作。 但是,只要我把它放在互联网上的服务器上,我点击任何菜单后都会看到如下所示的错误。

只有内容控件才能直接包含在包含内容控件的内容页面中。

截图

双重和三重检查您的子页面中的开始和结束内容标记。

确认他们

  • 存在
  • 拼写正确
  • 有一个ID
  • 有runat =“服务器”
  • 拥有正确的ContentPlaceHolderID

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

</asp:Content>

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

我面临着类似的问题。 您是否使用“内容”标记包围您的代码?

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

并为您的部分提供单独的内容标记。 标题声明的头部内容和正文声明的正文内容。

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

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

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

另一个可能的问题是HTML注释,我有这些围绕内容控件 - 我相信ASP.NET将这些转换为幕后的文字控件 - 因此错误我

此错误的另一个潜在原因:标签包含错误的情况。

<asp:content>...更改为<asp:Content>...修复了我的问题。

错误案例的原因是visual studio 2012(和2013)中的内置格式文档功能具有默认设置。 可以在工具 - >选项 - >文本编辑器 - > HTML(Web窗体) - >格式化中更改此设置:将标签大写设置为“已输入”,工作室将不再销毁您的文件。

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

<%--<%@ 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。 刚卸下它们后,装好了。

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

复制整个页面并将其重新放置在自身上就可以解决问题,因为此时VS会重命名重复的控件ID。

在我的情况下,我忘了添加AjaxControlToolkit.dll的程序集引用。

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

在SharePoint中,它发生在pageLayout未发布之后。

我有一个愚蠢的语法错误,我一直忽视。 还有一个额外的<在我的MasterType标签的开头,我看不到我的生活🤦♂️。

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

<<%@ MasterType VirtualPath="~/Site1.Master" %>

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

我的<%@ Master %>页在文件的开头包含两个 UTF-8 BOM表,因为我从另一个页面粘贴了<%@ Master %>指令。 我能够通过退出它来使它工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM