213 votes

Comment référencer un fichier .css sur une vue de rasoir?

Je sais comment définir des fichiers .css dans le fichier _Layout.cshtml, mais qu'en est-il de l'application d'une feuille de style pour chaque vue?

Je pense ici que, dans _Layout.cshtml, vous avez les balises <head> avec lesquelles travailler, mais pas dans l'une de vos vues non-layout. Où vont les balises <link> ?

375voto

Darin Dimitrov Points 528142

Pour les CSS qui sont réutilisés parmi l'ensemble du site, je les définir dans l' <head> de la section de l' _Layout:

<head>
    <link href="@Url.Content("~/Styles/main.css")" rel="stylesheet" type="text/css" />
    @RenderSection("Styles", false)
</head>

et si j'ai besoin d'afficher des styles spécifiques de définir l' Styles section dans chaque vue:

@section Styles {
    <link href="@Url.Content("~/Styles/view_specific_style.css")" rel="stylesheet" type="text/css" />
}

Edit: Il est utile de savoir que le deuxième paramètre @RenderSection, false signifie que la section n'est pas obligatoire sur une vue qui utilise cette page maître, et le point de vue moteur béatement ignorer le fait qu'il n'y a pas de "Styles" de l'article défini dans votre point de vue. Si la valeur est true, la vue ne sont pas rendues et une erreur sera levée, à moins que les "Styles" de la section a été définie.

23voto

MrBoJangles Points 4677

J'ai essayé d'ajouter un bloc comme ça:

 @section styles{
    <link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" />
}
 

Et un bloc correspondant dans le fichier _Layout.cshtml:

 <head>
<title>@ViewBag.Title</title>
@RenderSection("styles", false);
</head>
 

Qui fonctionne! Mais je ne peux pas m'empêcher de penser qu'il existe une meilleure solution. MISE À JOUR: Ajout de "false" dans l'instruction @RenderSection afin que votre vue ne soit pas divisée lorsque vous omettez d'ajouter un @section appelé head .

3voto

BentOnCoding Points 6199

la mise en page fonctionne de la même manière qu'une page maître. toute référence css que la disposition a, toutes les pages enfants auront.

Scott Gu a une excellente explication ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X