2011-01-19 12 views

risposta

45

L'equivalente di segnaposto contenuto in Rasoio sono sezioni.

Nel vostro _Layout.cshtml:

<head> 
@RenderSection("Styles", required: false) 
</head> 

Poi, nel tuo pagina di contenuto:

@section Styles { 
    <link href="@Url.Content("~/Content/StandardSize.css")" /> 
} 

Una soluzione alternativa sarebbe quella di mettere gli stili in ViewBag/Viewdata:

Nel tuo _Layout.cshtml:

<head> 
    @foreach(string style in ViewBag.Styles ?? new string[0]) { 
     <link href="@Url.Content(style)" /> 
    } 
</head> 

E nella tua pagina di contenuto:

@{ 
    ViewBag.Styles = new[] { "~/Content/StandardSize.css" }; 
} 

Questo funziona perché la pagina di visualizzazione viene eseguito prima del layout.

+2

Questo è anche un ottimo modo per aggiungere riferimenti di script specifici alla vista. – ReinierDG

+0

La soluzione alternativa è buona per le persone che non hanno ancora convertito la loro soluzione per utilizzare Razor. Grazie! – Mayo

-2

Sorprendentemente (per me), asp: ContentPlaceHolder funziona. Sembra molto spiacevole però. Mi chiedo se c'è un altro modo?

In particolare, si mette <asp:ContentPlaceHolder ID="HeadContent" runat="server" /> nel vostro _layout.cshtml e

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
    <link href="@Url.Content("~/Content/StandardSize.css")" rel="stylesheet" type="text/css" /> 
</asp:Content> 

nella vista.

+0

Ti sembra solo che funzioni. Hai guardato l'HTML generato? – marcind

+0

Hai ragione. Ho appena visto che sono stati applicati gli stili che volevo ma non ho controllato l'HTML. Mi stavo chiedendo come veniva elaborato un tag del server con Razor. – JohnOpincar

Problemi correlati