如何在我的asp.net网站上的某些页面中包含CSS引用?如果我在我的母版页中包含该引用,则该网站的所有页面都共享CSS引用。
答案 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") %>