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

时间:2013-02-14 05:50:31

标签: asp.net master-pages

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

  

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

screenshot

12 个答案:

答案 0 :(得分:24)

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

确认他们

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

答案 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 %>指令。我可以通过退格使它们工作。