displayfor - ¿Cómo puedo tener contenido<head> específico para la vista con Asp.Net MVC 3 y Razor?
html displayfor text color (2)
Deseo vincular una hoja de estilos específica en ciertas Vistas además de lo que ya está vinculado en _Layout.cshtml. Para los que no sean Razor, veo usar el marcador de posición de contenido. ¿Cómo haría esto por Razor?
El equivalente de los marcadores de posición de contenido en Razor son secciones.
En su _Layout.cshtml:
<head>
@RenderSection("Styles", required: false)
</head>
Luego, en tu página de contenido:
@section Styles {
<link href="@Url.Content("~/Content/StandardSize.css")" />
}
Una solución alternativa sería poner sus estilos en ViewBag / ViewData:
En su _Layout.cshtml:
<head>
@foreach(string style in ViewBag.Styles ?? new string[0]) {
<link href="@Url.Content(style)" />
}
</head>
Y en tu página de contenido:
@{
ViewBag.Styles = new[] { "~/Content/StandardSize.css" };
}
Esto funciona porque la página vista se ejecuta antes del diseño.
Sorprendentemente (para mí), asp: ContentPlaceHolder funciona. Parece muy poco fanático sin embargo. Me pregunto si hay otra manera?
Específicamente, pones <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
en tu _layout.cshtml y
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<link href="@Url.Content("~/Content/StandardSize.css")" rel="stylesheet" type="text/css" />
</asp:Content>
en tu opinión.