如何在母版页中引入CSS?

24
我该如何在我的ASP.NET网站中只在特定页面引用CSS样式表?如果我在母版页中引用,整个网站的页面都会共享这个CSS样式表。
3个回答

38

只需添加一个具有默认值的CSS ContentPlaceHolder。

基本上,指定为默认值的CSS文件将被包括,除非您通过来自子页面的<asp:Content />标记覆盖该占位符。

您的母版页应该类似于这样。

<head>
    <asp:ContentPlaceHolder ID="Stylesheets" runat="server">
        <link rel="stylesheet" href="/css/master.css" type="text/css" />
    </asp:ContentPlaceHolder>
</head>

那么从使用该母版页的任何页面,您都可以使用不同的样式表来覆盖它。

例如,在 AboutUs.aspx 上

<asp:Content ID="Content1" ContentPlaceHolderID="Stylesheets" runat="server">
    <link rel="stylesheet" href="/css/form.css" type="text/css" />
</asp:Content>

3
我更喜欢这个解决方案,比起我的建议。我之前使用过它,是一个不错的选择。不过我还是会保留我的回答,因为有人可能会觉得它有用。 - Daniel Dyson

7

在我的情况下,我在解决方案的不同位置使用了相同的主页面。由于在引用我的CSS文件时使用了~(波浪号)前缀,因此我添加了一个response.write到引用中,如下所示:

<%= ResolveUrl("~/css/myStyle.css") %>

谢谢,这个方法对我有用。但是你知道使用 <%= ResolveUrl("~/xxx")%> 有什么缺点吗? - curiousBoy

6
您可以在您的网站上使用多个主页。
您还可以使用嵌套主页。顶层可能具有一般的网站结构,然后为每个不同的区域选择一个嵌套主页。
当您右键单击项目并选择添加时,选择WebContentForm选项,而不是WebForm。然后,您可以选择适当的主页。
在您的嵌套主页中,将MasterPageFile设置为您的顶级主页。
编辑:与@Marko的方法相结合,您可以拥有以下内容...
这里的优点是,您所有的重写只需要编写一次。
顶级主页:
<head>
    <asp:ContentPlaceHolder ID="Stylesheets" runat="server">
        <link rel="stylesheet" href="/css/default.css" type="text/css" />
    </asp:ContentPlaceHolder>
</head>

没有覆盖的嵌套主控件

<%@ Page Language="C#" MasterPageFile="~/Site.master"%>
//don't reference the Stylesheets ContentPlaceHolder and the default is rendered

嵌套的主母版页面一(Nested MasterPage One)与 override.css
<%@ Page Language="C#" MasterPageFile="~/Site.master"%>
<asp:Content ID="Content1" ContentPlaceHolderID="Stylesheets" runat="server">
    <link rel="stylesheet" href="/css/override.css" type="text/css" />
</asp:Content>

使用secondOverride.css的嵌套第二个主控页面

<%@ Page Language="C#" MasterPageFile="~/Site.master"%>
<asp:Content ID="Content1" ContentPlaceHolderID="Stylesheets" runat="server">
    <link rel="stylesheet" href="/css/secondOverride.css" type="text/css" />
</asp:Content>

然后,在任何网页表单上设置适当的母版页即可。

有没有办法在我的页面中只包含继承主页面的CSS引用? - Zo Has
是的,可以参考Marko的回答。两种方法的结合可能会完美地解决问题。 - Daniel Dyson
有关嵌套主控页的微软参考资料:https://msdn.microsoft.com/zh-cn/library/x2b3ktt7(v=vs.140).aspx - Yogi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接