如何在母版页中包含CSS?

Zo *_*Has 23 asp.net master-pages asp.net-2.0

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

Mar*_*rko 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>
Run Code Online (Sandbox Code Playgroud)

然后,从使用该母版页的任何页面,您只需使用不同的样式表覆盖它.

在(例子)AboutUs.aspx

<asp:Content ID="Content1" ContentPlaceHolderID="Stylesheets" runat="server">
    <link rel="stylesheet" href="/css/form.css" type="text/css" />
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

  • +1我实际上比我的建议更喜欢这个解决方案.我以前用过它,这是一个不错的选择.我会留下我的答案,因为有人可能会发现它有用. (3认同)

Dan*_*son 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>
Run Code Online (Sandbox Code Playgroud)

嵌套的MasterPage没有覆盖

<%@ Page Language="C#" MasterPageFile="~/Site.master"%>
//don't reference the Stylesheets ContentPlaceHolder and the default is rendered
Run Code Online (Sandbox Code Playgroud)

带有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>
Run Code Online (Sandbox Code Playgroud)

嵌套的MasterPage 2与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>
Run Code Online (Sandbox Code Playgroud)

然后,只需在任何Web表单上设置相应的母版页.


小智 6

在我的情况下,我在解决方案中使用了来自不同位置的相同母版页.并且由于对我的css文件的引用的〜(Tilde)前缀,我在引用中添加了一个response.write,如下所示:

<%= ResolveUrl("~/css/myStyle.css") %>
Run Code Online (Sandbox Code Playgroud)