Pregunta ¿Cómo puedo tener contenido específico para la vista con Asp.Net MVC 3 y Razor?


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?


32
2018-01-19 19:45


origen


Respuestas:


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.


45
2018-01-19 20:11



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 su _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.


-2
2018-01-19 20:00