web-dev-qa-db-fra.com

Comment inclure CSS dans les pages maîtres?

Comment inclure la référence CSS dans seulement certaines pages de mon site asp.net? Si j'inclus la référence dans ma page maître, toutes les pages du site Web partagent la référence CSS.

23
Zo Has

Ajoutez simplement un CSS ContentPlaceHolder avec une valeur par défaut.

Fondamentalement, le fichier CSS que vous spécifiez par défaut sera inclus, sauf si vous remplacez cet espace réservé par un <asp:Content /> tag d'une page enfant.

Votre page maître devrait ressembler à ceci.

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

Ensuite, à partir de toutes les pages utilisant cette page maître, vous pouvez simplement remplacer cela par une feuille de style différente.

On (exemple) AboutUs.aspx

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

Dans ma situation, j'ai utilisé la même page maître à partir de différents emplacements dans la solution. Et depuis le préfixe ~ (Tilde) sur la référence à mes fichiers CSS, j'ai ajouté un response.write à la référence comme ceci:

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

Vous pouvez utiliser plusieurs pages maîtres sur votre site.

Vous pouvez également utiliser des pages maîtres imbriquées. Le niveau supérieur peut avoir la structure générale du site, puis une page maître imbriquée maître pour chacune de vos différentes zones.

Lorsque vous cliquez avec le bouton droit sur votre projet et sélectionnez Ajouter, vous choisissez l'option WebContentForm, au lieu de WebForm. Ensuite, vous pouvez sélectionner la page maître appropriée.

Dans vos pages maîtres imbriquées, vous définissez le MasterPageFile égal à votre page maître de niveau supérieur.

Edit Lorsqu'il est combiné avec l'approche de @ Marko, vous pourriez avoir ce qui suit ...

L'avantage ici est que tous vos remplacements ne doivent être écrits qu'une seule fois.

MasterPage de haut niveau:

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

MasterPage imbriquée sans remplacement

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

MasterPage One imbriqué avec override.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 Two imbriqué avec 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>

Ensuite, définissez simplement la page maître appropriée sur l'un de vos formulaires Web.

6
Daniel Dyson