我该如何在我的ASP.NET网站中只在特定页面引用CSS样式表?如果我在母版页中引用,整个网站的页面都会共享这个CSS样式表。
只需添加一个具有默认值的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>
在我的情况下,我在解决方案的不同位置使用了相同的主页面。由于在引用我的CSS文件时使用了~(波浪号)前缀,因此我添加了一个response.write到引用中,如下所示:
<%= ResolveUrl("~/css/myStyle.css") %>
<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
<%@ 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>