我有一个包含母版页和子页面的应用程序。我的应用程序在本地主机上(在我的Intranet上)正常工作。但是一旦我把它放在互联网上的服务器上,我点击任何菜单后都会看到如下所示的错误。
只允许在包含内容控件的内容页面中使用内容控件。
答案 0 :(得分:24)
在您的子页面中,双击和三重检查您的开始和结束内容标记。
确认他们
答案 1 :(得分:9)
我遇到了类似的问题。您是否使用“内容”标记围绕代码?
<asp:Content>Add your HTML here</asp:Content>
并为您的部分添加单独的内容标记。 标题声明的头部内容和正文声明的正文内容。
答案 2 :(得分:9)
我有完全相同的问题。问题是我在结束内容标记后面有一些空格:
</asp:Content>
删除最后一个结束标记后的所有空格和换行符。
答案 3 :(得分:6)
另一种可能性是行结尾。我从源代码控制中复制了一个旧版本的代码,强制执行Unix样式的行结尾。由于它不是结帐,因此它不会自动将行结尾转换为DOS / Windows样式。即使页面布局正确,错误消息是“只允许内容控件直接...”错误。看起来缺少Windows样式换行符导致ASPX解析器失败。
我能够通过将代码粘贴到行结束不可知编辑器(导致行结尾标准化为Windows样式),将其重新复制到剪贴板并将其粘贴回Visual Studio中来修复它。页面处理没有错误。
在Tripati Subudhi提出的问题中,完全有可能将部署过程中的某些内容无意中将行结尾转换为Unix样式,从而导致错误。
答案 4 :(得分:6)
另一个可能的问题是HTML评论,我有这些围绕一个内容控件 - 我相信ASP.NET将这些转换为幕后的文字控件 - 因此错误我
答案 5 :(得分:3)
此错误的另一个可能原因:标签包含错误的情况。
将<asp:content>...
更改为<asp:Content>...
解决了我的问题。
错误案例的原因是visual studio 2012(和2013)中的内置格式文档功能,具有默认设置。 可以在工具 - &gt;选项 - &gt;文本编辑器 - &gt; HTML(Web窗体) - &gt;格式化中更改此设置:将标记大小写设置为“已输入”,工作室将不再销毁您的文件。< / p>
答案 6 :(得分:2)
对我来说,我并没有想到我有一个程序集和一个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。刚删除后,它装得很好。
答案 7 :(得分:1)
对我而言,两个内容控件具有相同的ID - 该文件已在Visual Studio之外编辑,因此重复ID的自动重命名不会发生。这个误导性错误突出显示了第二个内容控件中的第一个图像,其ID与第一个相同 - 这是一个疯狂的追逐!
复制整个页面并将其重新置于其自身后解决了问题,因为此时的VS会重命名重复的控件ID。
答案 8 :(得分:0)
在我的情况下,我忘了添加AjaxControlToolkit.dll的程序集引用。
当我添加引用时,错误消失了。
答案 9 :(得分:0)
在SharePoint中,它发生在pageLayout未发布之后。
答案 10 :(得分:0)
我一直忽略一个愚蠢的语法错误。 <
标签的开头还有一个额外的MasterType
,我一生都看不到♂️。
<%@ Page Language="vb" AutoEventWireup="true" MasterPageFile="~/Site1.Master" CodeBehind="Default.aspx.vb" Inherits="SomeApp.Web._Default" %>
<<%@ MasterType VirtualPath="~/Site1.Master" %>
答案 11 :(得分:0)
我的主页正好在文件开头包含了两个 个UTF-8 BOM,因为我从另一页粘贴了<%@ Master %>
指令。我可以通过退格使它们工作。