如何在母版页中包含CSS?

时间:2010-10-25 11:07:48

标签: asp.net master-pages asp.net-2.0

如何在我的asp.net网站上的某些页面中包含CSS引用?如果我在我的母版页中包含该引用,则该网站的所有页面都共享CSS引用。

3 个答案:

答案 0 :(得分:38)

只需添加一个包含默认值的CSS ContentPlaceHolder。

基本上,除非您从子页面覆盖带有<asp:Content />标记的占位符,否则将包含您指定为默认值的CSS文件。

您的母版页看起来应该是这样的。

<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>

答案 1 :(得分:6)

您可以在自己的网站上使用多个母版页。

您还可以使用嵌套母版页。顶级可能具有常规站点结构,然后是每个不同区域的一个主嵌套母版页。

右键单击项目并选择“添加”时,选择WebContentForm选项,而不是WebForm。然后,您可以选择适当的母版页。

在嵌套的主页中,您将MasterPageFile设置为等于您的顶级母版页。

编辑当与@ Marko的方法结合使用时,您可以拥有以下内容......

这里的优点是所有覆盖只需要写一次。

顶级MasterPage:

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

没有覆盖的嵌套MasterPage

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

使用override.css嵌套的MasterPage One

<%@ 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>

嵌套MasterPage 2 with 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>

然后,只需在您的任何网络表单上设置相应的母版页。

答案 2 :(得分:6)

在我的情况下,我在解决方案中使用了来自不同位置的相同母版页。自从我的css文件引用上的〜(Tilde)前缀,我就像这样在引用中添加了一个response.write:

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