Je veux lier une feuille de style spécifique dans certaines vues en plus de ce qui est déjà lié dans _Layout.cshtml. Pour les non-Razor, je vois l'utilisation de l'espace réservé au contenu. Comment pourrais-je faire cela pour Razor?
Réponses
Trop de publicités?L'équivalent des espaces réservés de contenu dans Razor sont des sections.
Dans votre _Layout.cshtml:
<head>
@RenderSection("Styles", required: false)
</head>
Puis dans votre page de contenu:
@section Styles {
<link href="@Url.Content("~/Content/StandardSize.css")" />
}
Une solution alternative serait de mettre vos styles dans ViewBag / ViewData:
Dans votre _Layout.cshtml:
<head>
@foreach(string style in ViewBag.Styles ?? new string[0]) {
<link href="@Url.Content(style)" />
}
</head>
Et dans votre page de contenu:
@{
ViewBag.Styles = new[] { "~/Content/StandardSize.css" };
}
Cela fonctionne car la page de vue est exécutée avant la mise en page.
Étonnamment (pour moi), asp: ContentPlaceHolder fonctionne. Semble très imperturbable cependant. Je me demande s'il y a un autre moyen?
Plus précisément, vous mettez <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
dans votre _layout.cshtml et
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<link href="@Url.Content("~/Content/StandardSize.css")" rel="stylesheet" type="text/css" />
</asp:Content>
à votre avis.