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

问题描述 投票:0回答:12

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

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

screenshot

asp.net master-pages
12个回答
27
投票

仔细检查整个子页面的开始和结束内容标签。

确认他们

  • 存在
  • 拼写正确
  • 有身份证
  • 已运行=“服务器”
  • 有正确的ContentPlaceHolderID

15
投票

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

</asp:Content>

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


11
投票

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

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

并为您的部分设置单独的内容标签。 头部声明的头部内容和主体声明的主体内容。


9
投票

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

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

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


6
投票

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


5
投票

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

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

故障原因是 Visual Studio 2012(和 2013)中内置的 format document 功能采用默认设置。 可以在“工具”->“选项”->“文本编辑器”->“HTML(Web 表单)”->“格式”中更改此设置:将标签大写设置为“输入时”,studio 将不再破坏您的文件。


4
投票

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

我的母版页在文件开头包含 two UTF-8 BOM,因为我从另一个页面粘贴了

<%@ Master %>
指令。我可以通过将它们退格来使其工作。


3
投票

对我来说,它不喜欢我注释掉了 Assembly 和 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 来做任何事情。删除它们后,加载正常。


3
投票

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

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


2
投票

就我而言,我忘记添加 AjaxControlToolkit.dll 的程序集引用。

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


2
投票

我有一个愚蠢的语法错误,我一直忽略。我的

<
标签开头有一个额外的
MasterType
,我一辈子都看不到 🤦u200d♂️。

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

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

0
投票

在 SharePoint 中,由于页面布局未发布而发生这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.