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

Tri*_*dhi 32 asp.net master-pages

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

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

截图

Bri*_*ter 24

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

确认他们

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


Adr*_*cia 10

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

</asp:Content>
Run Code Online (Sandbox Code Playgroud)

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

  • 这是摆脱Web表单的一个很好的理由 (6认同)

Moh*_*r K 9

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

<asp:Content>Add your HTML here</asp:Content> 
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,我有单独的头部和身体内容.我的代码也在内容占位符内.它仍然给出同样的错误. (2认同)

jba*_*all 9

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

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

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

  • 这是我的问题.我使用的是Visual Studio,所以我只是选择了所有被评论然后取消评论.这为我修好了. (3认同)

use*_*142 6

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


gar*_*arg 5

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

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

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