2011-02-16 11 views

Respuesta

265

Por CSS que se reutilizan entre todo el sitio que les definen en la sección <head> del _Layout:

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

y si necesito algunos estilos específicos de vista que definen la sección Styles en cada vista:

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

Editar: Es útil saber que el segundo parámetro en @R enderSection, false, significa que la sección no es necesaria en una vista que utiliza esta página maestra, y el motor de vista ignorará felizmente el hecho de que no hay una sección de "Estilos" definida en su vista. Si es verdadero, la vista no se renderizará y se lanzará un error a menos que se haya definido la sección "Estilos".

+4

Ya sabes, pensándolo bien, eso no es tan malo. Creo que es nuevo y diferente. – MrBoJangles

+1

Véase también http://stackoverflow.com/a/4311876/376366 –

+0

@sección Estilos -> dice que no se puede resolver Estilos de sección, ¿qué significa? – Revious

3

diseño funciona igual que una página maestra. cualquier referencia css que tenga el diseño, cualquier página secundaria tendrá.

Scott Gu has an excellent explanation here

+1

muy agradecido. Sin embargo, mi pregunta es, ¿cómo puedo establecer una referencia a una sola vista, no el "maestro". – MrBoJangles

14

He intentado añadir un bloque de este modo:

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

y un bloque correspondiente en el archivo _Layout.cshtml:

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

que funciona! Pero no puedo evitar pensar que hay una mejor manera. ACTUALIZACIÓN: se agregó "falso" en la declaración @RenderSection por lo que su vista no se 'desplegará' cuando omita agregar un @section llamado head.

+0

No hay una mejor manera, aunque yo llamaría a la sección '" Cabeza "'. – SLaks

+0

Tienes razón. Llamarlo "pageStyle" sugiere que es solo para ese propósito. – MrBoJangles

+1

Si lo haces de esta manera, necesitarías agregar "MyStyles" en todas las vistas, iría con la respuesta de Darin. –

8

Usando

@Scripts.Render("~/scripts/myScript.js") 

o

@Styles.Render("~/styles/myStylesheet.css") 

podría funcionar para usted.

https://stackoverflow.com/a/36157950/2924015

+2

No publique enlaces a [respuestas duplicadas] (// meta.stackexchange.com/a/211726/206345). En su lugar, considere otras acciones que podrían ayudar a los futuros usuarios a encontrar la respuesta que necesitan, como se describe en la publicación vinculada. – Mogsdad

0

Puede esta estructura en Layout.cshtml presentar

<link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" /> 
+1

¿Cómo me permite aplicar de forma selectiva una hoja de estilos por vista? – MrBoJangles

Cuestiones relacionadas