2011-01-19 2 views

答えて

45

Razorのコンテンツプレースホルダーに相当するのは、セクションです。あなたのコンテンツページで次に

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

:あなたの_Layout.cshtmlで

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

代替ソリューションはViewBag/ViewDataをにあなたのスタイルを置くために、次のようになります。

あなたの_Layout.cshtmlに:

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

そして、あなたのコンテンツページで:

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

ビューページをレイアウトする前に実行されますので、これは動作します。

+2

これは、ビュー固有のスクリプト参照をヘッドに追加するための素晴らしい方法です。 – ReinierDG

+0

別の解決策は、解答をまだ変換していない人には、かみそりを使用するのに適しています。ありがとう! – Mayo

-2

驚いたことに(私に)asp:ContentPlaceHolderは機能します。しかし、非常にunrazorishと思われる。別の方法があるのだろうか?

具体的に、あなたはあなたのビューで_layout.cshtmlで<asp:ContentPlaceHolder ID="HeadContent" runat="server" />

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

を置きます。

+0

それはうまくいくようです。生成されたHTMLを見ましたか? – marcind

+0

あなたはそうです。私はちょうど私が欲しかったスタイルが適用されているのを見ましたが、私はHTMLをチェックしませんでした。私はサーバのタグがRazorでどのように処理されているのか疑問に思っていました。 – JohnOpincar

関連する問題