0

我目前正在使用 Visual Studio 从头开始​​构建一个带有 C# 网站的 ASP.NET。我有一个 aspx 文件,它引用了几个用户控件(ascx),如下所示:

<%@ Register src="UserControls/CategoriesList.ascx" tagname="CategoriesList" tagprefix="uc2" %>

我有兴趣自定义页面上的一些元素(例如标签等),所以我包括(紧接在上面的行之后)对我的 .CSS 文件的引用:

<link rel="Stylesheet" type="text/css" href="Cinemax.css" />

这样做后,我收到一条错误消息:

解析器错误消息:仅允许直接在包含内容控件的内容页面中使用内容控件。

该错误特别指出<link rel.... (line of code inserted above.)

是否有解决方法,以便我可以包含 [在同一个文件中!] 对用户控件以及 CSS 样式表的引用?提前谢谢了。

4

4 回答 4

2

好像您正在使用母版页。母版页有

<asp:ContentPlaceHolder 

标签。您有问题的页面通过使用覆盖这些标签的内容

<asp:Content 

标签。

默认情况下,您的母版页应该有这样的内容(对页面头部部分的引用):

<asp:ContentPlaceHolder runat="server" ID="HeadContent" />

要从您正在谈论的页面中引用您的样式表,您可以这样做:

<asp:Content runat="server" ID="Content" ContentPlaceHolderID="HeadContent">
    <link rel="Stylesheet" type="text/css" href="Cinemax.css" />
</asp:Content>

因为 css 引用必须位于 head 部分。至于你得到的错误,这是因为如果一个页面有一个母版页,它不能有任何内容之外

<asp:ContentPlaceHolder 

标签。

于 2012-06-02T10:11:30.853 回答
1

如果您指的是<asp:Content />标签,则不能将它们之外的任何内容放在 .aspx 页面中。因此,您仅限于将它们放在标签内。

如果您想要<script /><link />标签,您需要<asp:ContentPlaceHolder /><head>您的母版页中放置一个,或者通过页面的Controls集合动态添加它们。

于 2012-06-02T10:10:56.533 回答
1

您正在使用母版页,并且您没有将所有内容都放在<asp:Content控件中,因此您会收到此消息。

确保您的所有内容都在来自母版页的内容控件中。

于 2012-06-02T10:08:06.860 回答
1

我想您应该将包含css的行放在页面部分的文件中<head></head>,这样您的文件就可以如下所示:

<%@ Register src="UserControls/CategoriesList.ascx" tagname="CategoriesList" tagprefix="uc2" %>

<html>
<head>
    <link rel="Stylesheet" type="text/css" href="Cinemax.css" />
</head>
<body>
    ...
</body>
</html>

更新:你写了你使用母版页,所以把它放在head那里应该可以解决问题。它对你有用,所以我正在写它,所以它对其他有类似问题的人也有帮助。

于 2012-06-02T10:13:56.807 回答