Как включить CSS в мастер-страницы?

Как включить ссылку CSS только на определенные страницы на моем asp.net сайт? Если я включаю ссылку на главную страницу, все страницы веб-сайта используют ссылку CSS.

3 ответов


просто добавьте 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>

затем с любых страниц, использующих эту главную страницу, вы можете просто переопределить ее с помощью другой таблицы стилей.

On (пример) Об этом.аспн

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

вы можете использовать более одной главной страницы на вашем сайте.

вы также можете использовать вложенные главные страницы. Верхний уровень может иметь общую структуру сайта, а затем одну главную вложенную главную страницу для каждой из ваших областей.

при щелчке правой кнопкой мыши проекта и выберите Добавить, выберите параметр WebContentForm вместо WebForm. Затем вы можете выбрать подходящее masterpage.

во вложенных мастер-страницах вы устанавливаете MasterPageFile равным ваш верхний уровень masterpage.

редактировать в сочетании с подходом @Marko вы можете иметь следующее...

преимущество здесь в том, что все ваши переопределения должны быть записаны только один раз.

Мастер-Страница Верхнего Уровня:

<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

вложенная страница MasterPage One с переопределением.в 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>

вложенные MasterPage два с 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>

затем просто установите соответствующую главную страницу на любой из ваших веб-форм.


в моей ситуации я использовал одну и ту же страницу из разных мест в решении. И так как префикс ~ (Tilde) в ссылке на мои css-файлы, я добавил ответ.напишите на ссылку так:

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